【问题描述】
完数是指一个整数恰好等于它的因子之和(除自身外),则称这个数为完数。从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。
【输入形式】
先后输入两个正整数m和n,用逗号分隔
【输出形式】
输出所有完数,每两个数之间用逗号分隔。若输入非法,则输出“error”
【样例输入】
1,2000
【样例输出】
6,28,496
你的难点在哪里呢?
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
有答案了么,正好要用
完整源代码:
#include <stdio.h>
/*
7、一个数如果刚好与它的所有的因子之和相等,则称该数为完数,如6=1+2+3,求出1000以内的所有完数 提示:用循环判断1-n之间的数是否为n的因子,是的话累加,要用到双重循环
因子:除了它本身约数
*/
void main8(){
int i,j;
int num;//因子之和
for(i=2;i<=500;i++){
num = 0;
//printf("%d的因子如下:",i);
for(j=2;j<=i;j++){ //j代表i对应的任何一个可能的因子
if(i %j == 0){
num += i/j; //3,2,1
//printf("%d+",i/j);
}
}
//printf("\n");
//判断因子之和是否和该数相等
if(num==i){
printf("%d是完数\n",i);
}
}
}
C语言入门到精通视频课程,大量实例:https://edu.csdn.net/course/detail/2766