编程找到1000以内的所有"完数
完整题目:一个数如果恰好等于它的因子之和,这个数就称
为"完数".例如,6的因子为1,2,3,而6=1+2+3,因此6
是"完数", 编
程找到期1000以内的所有"完数",并按下面格式输
出其因子:
6 Its factor
s are 1,2,3
请注意,这是一个学且仅学了谭浩强C程序设计第三版的人提的问题,请用C语言编译.请各位回答时考虑程序的可读性.不要冒出C++的语句,更不要用BASIC编请编译通过先再贴出来.谢谢
#include"stdio.h"烂李
main()
{
int j,i,k=0;
for(j=6;j<1001;j++)
{
for(i=1;i<饥唤=j/2;i++)if(j%i==0)k+=i;
if(j==k)
{
printf("%4d its factors are ",k);
for(i=1;i<=j/2;i++)
if(j%i==0)printf("%d,",i);printf("\b \n");
}
k=0;
}
getch();
}
测试过饥肢迟了,显示结果
6 its factors are 1,2,3
28 its factors are 1,2,4,7,14
496 its factors are 1,2,4,8,16,31,62,124,248
#define M 1000
main()
{int x,y,a,b,c;
for( x=1,x<M,x++)
{a=x/蚂兄悉100;
b=(x-a*100)/10;
c=(x-a*100-b*10);
y=a+b+c;
if (x=y)
pringf("完数为%d",x);
}
}
好久闷乎没有见尘信过C了,不知道对不对!
恕我无知,什么叫因子?
#include<stdio.h>厅兄
int main()
{
int i,j,sum;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<i;j++)
if(i%j==0)
sum=sum+j;
if(i==sum)
{
printf("%d its factors are "扮运袭,i);
for(j=1;j<i;j++)
if(i%j==0)
printf("%d,",j);
printf("\n");
}
}
return 0;
}
结果:悄兄
6 its factors are 1,2,3,
28 its factors are 1,2,4,7,14,
496 its factors are 1,2,4,8,16,31,62,124,248,
Press any key to continue
估计没有人帮你的
自己想想为什么吧