【説明】
正の整数2とnの間で完全な数を見つけます (行ごとに 1 つの数値)。
完全数: 因数の和はそれ自体の自然数に等しい ( 6=1+2+3など)
【入力】
n (n≤5000)を入力します。
【出力】
1 行に 1 つの数値を昇順で入力します。
【入力例】
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;
}