题目
明确完数定义:如果一个数除它自身之外,它的所有的因子的和等于它本身,这个数即是完数。例如:6的因子有1,2, 3 ,6,除本身以外,6=1+2+3,所以6就是一个完数。现在要求输入一个指定数字,打印该数字以内所有的完数。
解析:
无论输入何数,1始终是个完数,所以直接输出不用考虑。这里要注意的是,在累加因子之和时,在每一次内循环开始前要将累加器sum重置为0,否则它将带着上一个外循环所得的因子之和进行下一次内循环而导致出错。
代码如下:
#include"stdio.h"
int main()
{
int i,j,sum;
long int n;
printf("请输入指定数字:\n");
scanf("%ld",&n);
printf("1 its factors are 1\n");
for(i=2;i<n;i++)
{
sum=0;//累加器重置(关键点)
for(j=1;j<i;j++)
if(i%j==0)
sum+=j;//累加该数字的所有因子
if(sum==i) //判断是否为完数
{
printf("%d its factors are ",i);
for(j=1;j<i;j++)
{
if(i%j==0)
printf("%d ",j);
}
printf("\n");
}
}
return 0;
}
调试结果
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93513.html