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是一个完数。 展开
 我来答
duanggi
2019-05-22 · TA获得超过196个赞
知道小有建树答主
回答量:240
采纳率:87%
帮助的人:142万
展开全部
#include<stdio.h>
int main()
{
int i = 0, j = 0, res;
for (i = 1; i <= 1000; i++)
{
res = 0;
for (j = 1; j < i; j++)
{
if (i % j == 0) res += j;
}
if (res == i) printf("%d ", i);
}
printf("\n");
return 0;
}

朝是寒雨晚为风
2019-05-22 · TA获得超过345个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:147万
展开全部
#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;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jayhou1986
2019-05-22 · TA获得超过1510个赞
知道小有建树答主
回答量:586
采纳率:81%
帮助的人:409万
展开全部
#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);
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式