用C语言输出1000以内所有的完数步骤如晌正下:
1、宴链悔首先打开vc6.0,新建一个项目。
2、添加头文件。
3、添加main函数。
4、定义i,j,k,n,sum。
5、定义一个数组。
6、使用第一层for循环。
7、使用第二层for循环,用唤扰来求出每位的数字。
8、使用if条件判断语句。
9、运行程序看看结果。
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++;
}
}
#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);
}
}
C语言带裤经典虚中例子之差行山完数求解
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<<" "<
}
}
if(sum-a==a)
{
printf("%d是完数!\n",a);
}
a++;
}
printf("\n");
}
你的if位置放错了.
if(sum-a==a)
{
printf("%d是完数!\n",a);
}