一、问题及代码:
/* 文件名称:项目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的因子,并累加起来。
新闻热点
疑难解答
图片精选