題目如下
求正整數2和n之間的完全數(一行一個數)。
完全數:因子之和等於它本身的自然數,如6=1+2+3
#include<iostream> using namespace std; int judge(int x); int main() { int n; int i; cin>>n; for(i=2; i<=n; i++) if(judge(i)==i)//judge(i)為i的因子之和,judge(i)若與i相等,滿足條件,輸出 cout<<i<<endl; return 0; } int judge(int x)//利用函數來判斷具體的數 { int i; int sum=0; for(i=1; i<=x-1; i++) //枚舉1到x中,判斷是否為x的因子 if(x%i==0)//若是x的因子,累加 sum+=i; return sum; }
這個題 我一開始沒有用上函數而是直接打的代碼,認為不用函數就可以做出來
但打完代碼后發現有一個地方無論怎么改錯都不對
所以重新加入了函數
打出了最終的代碼
