求1到1000中的第二大完数~~所谓完数就象6=1+2+3;而1,2,3都是6的真..因子

来源:百度知道 编辑:UC知道 时间:2024/06/05 22:08:55

我来写这段代码吧:
#include<stdio.h>
int main()
{
int a,i,sum;
for(a=1;a<=1000;a++)
{ sum=0; /*更新sum的值为0*/
for(i=1;i<a;i++) /*求出a的所有因子和*/
if(a%i==0)
sum+=i;
if(sum==a) /*判断a是否等于他的因子之和sum*/
printf(" %d ",a);
}
}

其实只要注意到完全数肯定是偶数就可简化上面的运算,把for(a=1;a<=1000;a++)改为for(a=2;a<=1000;a=a+2)即可.

上面代码没编译,如果有错误请指出,希望能帮助到你.

这个应该算是数学问题了,不应该放在c++这问。要是想在代码上实现,首先要思维上分析出算法,没有算法的话是没法代码化的。

6,28,496,8128,第4个就比较大了...代码自己去搜把我就不重复贴上来了...以前贴过好多个..

#include <stdio.h>
#define M 1000
main()
{
int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
int i,a,n,s;
for(a=2;a<=M;a++)
{
n=0;
s=a;
for(i=1;i<a;i++)
if(a%i==0)
{
n++;
s=s-i;
switch(n)
{
case 1:k1=i;break;
case 2:k2=i;break;
case 3:k3=i;brea