c语言编程题"编程求1-1000之间的所有完数。完数:该数所有的因子(除去本身)相加之和等于其自身。
c语言编程题。编程求1-1000之间的所有完数。完数:该数所有的因子(除去本身)相加之和等于其自身。例如,6的因子1,2,3,6.除去自身,1+2+3=6.所以6是一个完...
c语言编程题。编程求1-1000之间的所有完数。完数:该数所有的因子(除去本身)相加之和等于其自身。例如,6的因子1,2,3,6.除去自身,1+2+3=6.所以6是一个完数。
展开
3个回答
展开全部
#include <stdio.h>
int main()
{
int i=1, j, num=0, sum;
printf("小于1000的完数有:\n");
printf("6\n");
/*6以外的完数除以3 9都余1(还有1/2除27余1等,详见百科,这里就不判断了),
同时完数也是三角数,利用这两个条件 可以大量减少因式分解的循环次数
,当范围越大的时,节省的时间也越明显*/
while (1)
{
num = num + i;
if (num >=1000) break;//大于1000,跳出循环
if (num%3 == 1 && num%9 == 1) // 先判断是否符合完数的性质
{
sum = 0;
for (j=1;j<num;j++)
{
if (num%j == 0)
sum = sum +j;
}
if (sum == num)
printf("%d\n",num);
}
i++;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main()
{
int i,j,sum;
printf("1-1000之间的所有完数:\n");
for (i=2;i<=1000;++i)
{
sum = 0;
for (j=1;j<i;++j)
{
if (i%j==0)
sum += j;
}
if (sum == i)
{
printf("%d\n", i);
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询