一、問題及代碼:
/* 文件名稱:項目7.cpp * 作 者:嚴明遠 * 完成日期:2017 年 3 月 5 日 * 版 本 號:v1.0 * 對任務及求解方法的描述部分: * 輸入描述:無 * 問題描述: 【項目7:輸出完數】一個數如果恰好等于它的因子之和,這個數就稱為“完數”。 例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完數。編程找出1000以內的所有完數。(答案:6 28 496)提示:首先從2到1000構造循環控制變量為i的外層循環。每次循環中,利用內嵌的循環逐個地求出i的因子,并累加起來(為提高效率,可能的因子從1到i/2),如果因子和等于i,則說明是完全數,輸出。然后繼續循環,考察i+1……* 程序輸出: * 問題分析:略 * 算法設計:略 */ #include<iostream>using namespace std;int main(){ int i,j,k,num,temp,n; int a[10];//存放因子。 for(i=2;i<1000;i++) { num=0,n=0;//初始化。 for(j=1;j<i;j++) { temp=0; if(i%j==0) { temp=1; a[n]=j; n++; } if(temp) num+=j;//判斷因子之和是否等于被除數。 } if(num==i) { cout<<"完數:"<<num<<"="; for(k=0;k<n-1;k++) { cout<<a[k]<<"+"; } cout<<a[n-1]<<endl; } } return 0;}二、運行結果:
三、’心得體會:
應熟練運用循環嵌套,每層循環數據應該初始化。
四、知識點總結:
因子不包括本身(!因數)可通過循環嵌套,利用內層循環逐個求出i的因子,并累加起來。
新聞熱點
疑難解答
圖片精選