这几串代码是啥意思(C程序)

来源:百度知道 编辑:UC知道 时间:2024/06/05 07:28:23
#include <stdio.h>

void main()
{
int a,s,k;
int n=0;
printf("(2,10000)中的完全数:\n");
for(a=2;a<=10000;a++){
s=1;
for(k=2;k<=a/2;k++)
if(!(a%k)) s+=k;
if(s!=a)continue;
n++;
printf("%d:%d=1",n,a);
for(k=2;k<=a/2;k++)
if(!(a%k))printf("+%d",k);
printf("\n");

}
}
这个代码中的
if(!(a%k)) s+=k;
if(s!=a)continue;
n++;

if(!(a%k))printf("+%d",k);
怎么解释?

完全数,又称完美数或完备数,是一些特殊的自然数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4 + 7 + 14=28。后面的数是496、8128等等。

for(k=2;k<=a/2;k++) //a是从2到10000的要求的所有自然数,从2开始遍历
{
if(!(a%k)) //如果a除以k是0
{s+=k;} //讲变量s的值加上除数的值 也就是s=s+k
}
if(s!=a) //如果s最后加上所有约数的值不等于所求的自然数,则
//继续判断下一个自然数
{continue;}
n++;

--------------------------------------------------------

if(!(a%k)) //若a除以k可以除尽
printf("+%d",k); //列出k的值

无法解释 这大概是系统的程序文档 要不就是系统错误后 蹦出的乱码
还有一种就是 系统崩溃后 跳出的 原始代码

看了好久,感觉有点乱。其中s没有输出,回去翻下书再帮你解决吧,都好久没看C语言书了…

好像是这样的!a对k取余不等于0则s=s+k,如果s不等于k 则跳出循环!执行n++
第二个是a对k取余不等于0输出k
我也不知道对错!我c知识很浅!就供参考吧!