题目描述】
求正整数2和n之间的完全数(一行一个数)。
完全数:因子之和等于它本身的自然数,如 6=1+2+3
【输入】
输入n(n≤5000)。
【输出】
一行一个数,按由小到大的顺序。
【输入样例】
7
【输出样例】
6
C++:
#include<iostream> using namespace std; int judge(int a); int main() { int n,k; cin>>n; for(k=2;k<=n;k++) if(judge(k)==k) //判断该自然数的因子之和是否等于本身 cout<<k<<endl; return 0; } int judge(int a) //该函数用来计算自然数的因子之和 { int i; int term=0; for(i=1;i<=a-1;i++) if(a%i==0) term+=i; return term; }
C语言:
#include<stdio.h> int judge(int a); int main() { int n,k; scanf("%d",&n); for(k=2;k<=n;k++) if(judge(k)==k) //判断该自然数的因子之和是否等于本身 printf("%d\n",k); return 0; } int judge(int a) //该函数用来计算自然数的因子之和 { int i; int term=0; for(i=1;i<=a-1;i++) if(a%i==0) term+=i; return term; }