重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
完全数是除自身外的所有因子之和与自身相等的数。用一个for循环检查2至1000的偶数(迄今为止发现的完数全是偶数),若符合条件则输出此数。检查时,用另一for循环计数变量从2开始步长为1至此数的一半去除此数,能整除的累加求和(1因子不用检查,直接计入和),最后与此数比较是否相等,相等的则是完数。代码如下:
创新互联成立与2013年,是专业互联网技术服务公司,拥有项目做网站、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元泰来做网站,已为上家服务,为泰来各地企业和个人服务,联系电话:18980820575
#include "stdio.h"
int main(int argc,char *argv[]){
int n,k,s,t,sum;
for(sum=0,n=2;n1000;n+=2){//遍历2~1000的偶数
for(s=1,t=(n1),k=2;k=t;k++)//用2~n/2检查是否能整除
if(n%k==0)//将因子累加至s
s+=k;
if(n==s)//检查s是否与n自身相等
sum+=s;//完数累加到sum求和
}
printf("The sum of them is %d\n",sum);
return 0;
}
运行结果如下:
这个求和一般是不用if判断的,用for或while循环都可以,也可以直接用等差数列和的公式计算。下面的程序是用if来实现中止while循环的例子:
#includestdio.h
int main()
{int i=1,s=0;
while(1)
{
s+=i++;
if(i100)break;
}
printf("%d\n",s);
getch();
}
测试过了,完全正确,你看看吧
#includestdio.h
int fun(int m)
{
int i;
if(m2) return 0;
for(i=2;i=m/2;i++)
if(m%i==0) return 0;
return 1;
}
void main( )
{
int n=0,i;
for(i=1000;i=1100;i++)
if(fun(i))
n+=i;
printf("sum=%d\n",n);
getch();
}
long int sum_odd(int max)
{
long int sum = 0;
int i = 1;
while(imax)
{
sum += i;
i += 2;
}
return sum;
}
执行的时候调用sum_odd(1000)就可以了