1、看代码,除了主函数语句 printf((%d是一个完数\n,a[i]); 中a[i]出界外,没有什么问题。如果去年这一句后仍然还有问题,可以考虑是不是有在汉字输入状态下输入命令或标点的情况。
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的莱阳网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
2、打开c语言编辑器,新建一个C语言空白文件:然后就可以开始编写代码了,这里完数的意思就是一个数等于它的因子之和,比如6的因子为3,而6刚好是这些数之和。
3、解题思路:所谓完数是一些特殊的自然数。如果一个数恰好等于它的因子之和,则称该数为“完全数”。先定义一个函数用于判断一个数是否是完数,接着依次从2到5000依次循环判断。
4、代码如下,另外这个完数的定义应该还有一条规则吧,等于不包括其本身的所有因子之和,每个数是其本身的因子,包括其本身的话不可能有等于各因子之和。
5、可以定义一个结构,其中的数据成员有:int型变量s,用以存储各因数的和值;int型数组ys,长度为64,用于存储各因数的值;还有一个int型变量c,用于存储因数的个数。
6、if(s == n) return 1;//如果与原值相等,则该数为完数。 return 0;//不是完数。}根据该函数,只需要对需要打印的范围内所有数做遍历,并逐一调用该函数判断,如果返回1则打印即可。
打开c语言编辑器,新建一个C语言空白文件:然后就可以开始编写代码了,这里完数的意思就是一个数等于它的因子之和,比如6的因子为3,而6刚好是这些数之和。
看代码,除了主函数语句 printf((%d是一个完数\n,a[i]);中a[i]出界外,没有什么问题。如果去年这一句后仍然还有问题,可以考虑是不是有在汉字输入状态下输入命令或标点的情况。
完全数是指所有真因子之和等于该数本身的正整数。
Data%Temp_i) == 0)Temp_D += Temp_i;}if(Temp_Data == Temp_D) return 1; //是完数else return 0; //不是完数}其实还有更简单的,现在已知的完数也就那么几个,直接判断其值是否是记录的完数的就OK了。
应该是do while这里没{} 还有好像do whle()后面要用分号应该是do`` while();循环最好用for写吧。
输出结果为: 6,28,496, 即1000以内的完数只有2496三个数字。
if (i % j == 0) { //它所有的真因子的和 sum += j;} //它所有的真因子的和 与它自身比较;//如果一个数恰好等于它的因子之和,则称该数为“完全数”。
void main (){ int i,n,sum;printf(2~5000的所有完全数为:);for (n=2;n=5000;n++){ sum=0;//sum=0;该移动这里。
然后将这个因数存储到结构的ys数组的c元素中,接着对c进行加一操作,函数体最后,返回定以被赋值了的结构变量。。接下来就是在主函数main中,调用该函数,具体步骤不再详述,见配图。
注意:建议n的取值小于10000,否则程序运行的时间将比较长。