题目如题,下面是我编的程序,好象没问题,但出现的结果是90=2*3*3*,我输入的是90.
#include <stdio.h>
#include <conio.h>
main()
{
int n,z;
clrscr();
printf("Input the data:\n");
scanf("%d",&n);
printf("%d=",n);
for(z=2;z<=n;z++)
{
while(n!=z)
{
if(n%z==0)
{
printf("%d*",z);
n=n/z;
}
else
break;
}
}
}
----------------解决方案--------------------------------------------------------
不是,是求水仙花数
----------------解决方案--------------------------------------------------------
你是想将一个数分解成质数的乘积是不
----------------解决方案--------------------------------------------------------
分解成素数的乘积,只是在前面多加了个1
#include<stdio.h>
int main(void)
{
int n,z;
printf("Input the data:\n");
scanf("%d",&n);
printf("%d=1",n);
for(z=2;;)
{
if(n%z==0)
{
n=n/z;
printf("*%d",z);
}
else
{
z++;
}
if(n==1)
break;
}
return 0;
}
----------------解决方案--------------------------------------------------------
while(n!=z) 这个条件错了 当n=5,z=5的时候,是进不了循环的,结果最后的5没有加上去,不过如果改成n>0的话,
后面又会带多了个*号.
所以建议你这样改
for(z=2;z<=n;z++)
{
while(n!=z)
{
if(n%z==0)
{
printf("%d*",z);
n=n/z;
}
else break;
}
if(n==z) printf("%d\n",z);
}
[此贴子已经被作者于2007-4-15 19:14:27编辑过]
----------------解决方案--------------------------------------------------------
你要的结果是90=2*3*3*5么,还是90=1*2*3*3*5?
----------------解决方案--------------------------------------------------------
2*3*3*5
----------------解决方案--------------------------------------------------------
可以了,弄好了
----------------解决方案--------------------------------------------------------
不要1也可以,这样
#include<stdio.h>
int main(void)
{
int n,z;
printf("Input the data:\n");
scanf("%d",&n);
printf("%d=",n);
for(z=2;;)
{
if(n%z==0)
{
n=n/z;
printf("%d*",z);
}
else
{
z++;
}
if(n==1)
break;
}
printf("\b \n");
return 0;
}
----------------解决方案--------------------------------------------------------