C语言 · 完数

算法训练 完数  
时间限制:1.0s   内存限制:512.0MB
    
问题描述
  一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6就是“完数”。又如,28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28也是“完数”。编写一个程序,判断用户输入的一个数是否为“完数”。
  输入格式:输入只有一行,即一个整数。
  输出格式:输出只有一行,如果该数为完数,输出yes,否则输出no。
  输入输出样例
样例输入
6
样例输出
yes
 
 
 1 #include<stdio.h> 
 2 int FindYinZi(int n)  
 3 {  
 4     int sum = 0, i;  
 5     for(i = 2; i <= n / 2; i++)  
 6     {  
 7         if(n % i == 0)  
 8         {  
 9             sum += i;   
10         }  
11     }  
12     return sum + 1;  
13 } 
14 int main(){
15     int N;
16     int sum=0;
17     scanf("%d",&N);
18     if(N==1)  
19     {  
20         printf("no");  
21         return 0;  
22     }  
23     sum = FindYinZi(N);  
24     if(sum == N)  
25         printf("yes");  
26     else  
27         printf("no");  
28     return 0; 
29 }
原文地址:https://www.cnblogs.com/panweiwei/p/6399289.html