用C语言找出1000以内的完数。

2024-11-20 23:49:48
推荐回答(5个)
回答1:

用C语言输出1000以内所有的完数步骤如晌正下:

1、宴链悔首先打开vc6.0,新建一个项目。

2、添加头文件。

3、添加main函数。

4、定义i,j,k,n,sum。

5、定义一个数组。

6、使用第一层for循环。

7、使用第二层for循环,用唤扰来求出每位的数字。

8、使用if条件判断语句。

9、运行程序看看结果。

回答2:

int a,m,n,sum,b;

a=2;
double i;
while (a<=1000)
{
sum=0;
i=sqrt(a);
for(m=1;m<=i ;m++)
{

for(n=1;n<=a;n++)
if(n*m==a)
{
b=m+n;
sum=sum+b;
if(sum-a==a)
{
printf("%d是完数!\n",a); //这里还没有加完,就认为是完数了 1+36+2+18+3+12=72
}
}
}
a++;
}
printf("\n");
}
你的程序效率太低猜禅了。如穗雹尘要算更大范围的要花很多时间。

下面给出我的程序:
#include
main()

{
int i,a=2,m,sum;
while (a<=30000)

{
sum=1;
i=sqrt(a);
for(m=2;m<=i;m++)
{
if(a%m==0)
sum+=m+a/m;
if(m*m==a)
sum-=m;
}
if(sum==a)
printf("%d是肆谨完数!\n",a);
a++;
}
}

回答3:

#include
#define N 1000
void main()
{
int k, j, s;
printf("%d内的完数:掘脊\n", N);
for (k = 2; k <= N; k++)
{
s = 0;
for (j = 1; j < k; j++)
{
if (k % j == 0) /* 判断是瞎衡否磨散做能被整除,能就相加 */
s = s + j;
}
if (s == k)
printf("%-4d", k);
}
}

回答4:

C语言带裤经典虚中例子之差行山完数求解

回答5:

int main()
{
int a,m,n,sum,b;

a=2;
double i;
while (a<=1000)
{
sum=0;
i=sqrt(a);
for(m=1;m<=i ;m++)
{

for(n=1;n<=a;n++)
if(n*m==a)
{
b=m+n;
//则槐cout<<羡盯冲b<<" "< sum=sum+b;
}

}
if(sum-a==a)
{
printf("%d是完数!\n",a);
}
a++;
}
printf("\n");
}
你的if位置放错了.
if(sum-a==a)
{
printf("%d是完数!\n",a);
}