循环~完数

题目描述

一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:

输入

N

输出

? its factors are ? ? ?

 1 #include<stdio.h>
 2 int main(){
 3     int N;
 4     //int sum=0;全局变量出错??
 5     int i,j;
 6     scanf("%d",&N);
 7     //外循环:做N次循环找N个数中的完数,内循环:找每个数的因子:根据数的不同循环的次数也不同
 8     for(i=2;i<=N;i++)
 9     {
10         int sum=0;
11         for(j=1;j<i;j++)
12         {
13             if(i%j==0){
14                 sum += j;
15             }
16         }
17         //printf("%d\n",sum);
18         if(i==sum)
19         {
20             printf("%d its factors are",i);
21             for(j=1;j<i;j++){
22                 if(i%j==0){
23                     printf(" %d",j);
24                 }
25             }
26         printf("\n");
27         }
28     }
29     return 0;
30 }

solution:

1 sum变量做全局变量的时候结果输出不了,做循环变量可以正常输出  不理解?

2 因子不等于质因数;因子:能够被本书整除的数就属于因子

3 外循环:做n次循环,找n个数中的完数

 第一个内循环:求因子的和

   第二个内循环:判断完是否是完数之后,循环输出完数的因子

posted on 2022-10-27 19:21  罗小罗佳油  阅读(81)  评论(0编辑  收藏  举报