問題 A: 完數
時間限制: 1 Sec 內存限制: 32 MB
題目描述
求1-n內的完數,所謂的完數是這樣的數,它的所有因子相加等於它自身,比如6有3個因子1,2,3,1+2+3=6,那麼6是完數。即完數是等於其所有因子相加和的數。
輸入
測試數據有多組,輸入n,n數據範圍不大。
輸出
對於每組輸入,請輸出1-n內所有的完數。如有案例輸出有多個數字,用空格隔開,輸出最後不要有多餘的空格。
樣例輸入
6
樣例輸出
6
經驗總結
因爲完數本身就很少,所以可以直接存儲,然後根據輸入的n,按順序輸出不大於n的所有完數即可~~
AC代碼
#include <cstdio>
int main()
{
int a[8]={6,28,496,8128,33550336,0},n;
while(~scanf("%d",&n))
{
for(int i=0;i<6;i++)
{
if(a[i]<=n)
{
printf("%d",a[i]);
if(a[i+1]<=n&&a[i+1]!=0)
printf(" ");
else
{
printf("\n");
break;
}
}
}
}
return 0;
}