完全数c语言程序(完全数c语言程序编写)

本篇文章给大家谈谈完全数c语言程序,以及完全数c语言程序编写对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用c语言怎样编写n个数以内的完全数的程序

完全数是指所有真因子之仿薯世和等于该数本身的正整数。可以使用以下C语言代码来找出小于等于n(n为正整数)的完备肢全数:

```c

#include stdio.h

int main() {

int n, i, j, sum;

printf("请输入一个正整数n:");

scanf("%d", n);

for (i = 1; i = n; ++i) {

sum = 0;

for (j = 1; j = i / 2; ++j) {

if (i % j == 0) {

sum += j;

}

}

if (sum == i) {

printf("%d\n", i);

}

}

return 0;

}

```

解释如下:

1. 首先,定义变量n、i、j和sum。

2. 要求用户输入n。

3. 使用两个嵌套的循环来遍历从1到n的每个数字。

4. 内部循环计算数字i的所有真因子之和。

5. 如果该总和等于数字i本身,则输出该数字,即它是一个完全数。

6. 最后返回0结束程序。

注意,此代码中包含了一个优化,即内部循环只需要手宴遍历1到i的一半,因为大于i的一半的因子已经在之前被计算过了。

[img]

c语言编程 计算1000以内的完全数,每8个数字一行。

#include stdio.h

int main()

{

int x,k,f=0,n;

for(x=2;x誉慧=1000;x++)

{

n=0;//注意每次循环n都要为0

for(k=1;kx;k++)//注意k要从1开始

if(x%k==0)

n=n+k;

if(n==x)

{

printf("%d ",x);

f++;

if(f%8==0)

printf("\n");

}

}

}

//其实1到1000内只庆燃答有段逗6 28 496这三个

用C语言编程:输出2~100之间所有完数,完数是指该数各因子之和等于该数本身

C语言程序如下:

#include stdio.h

int main()

{

long int i,j,sum; 

for(i=2;i100;i++)

{   sum=0;

for(j=2;j=i/2;j++)

{

if(i%j==0)

{

sum=sum+j;

}

}

if(i==sum+1)

printf("%d\n",i);

}

}

扩展桐郑资料:

如果一个数恰好等于它的因子之和,则称该数为“完全数”。

第一个完全数局颂颂是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,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。

参考资料:百度百科-完全数

c语言:完全数程序

如果想显示完全数的因子的话,用数组存储比较合适。你的程序有个逻辑错误。

if(a%b==0)你忘记还有自身也是自身的因子数,导致后面凳尺的判别局衫式永远不成立,应枣腊高改为

if(a%b==0a!=b)

自己改了下用数组的:

#includestdio.h

int

main()

{

int

k[20],a,b,c;

for(a=2;a=1000;a++)

{c=0;

for(b=1;b=a;b++)

{

if(a%b==0b!=a)

{

k[c]=b;

c++;

}

if(b==a){

int

num=0;

for(int

i=0;ic;i++)

num=num+k[i];

if(num==a){

printf("%d

",a);

printf("its

factors

is

:

");

for(int

i=0;ic;i++)

printf("%d

",k[i]);

printf("\n");

}

}

}

}

return

0;

}

C语言求完数

/*完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3.(6的因子是1,2,3)*/

#includestdio.h

void main()

{

int i,j,k,h,s,sum;

int a[200];//20个是不够的

s=0;

sum=0;

for(i=2;i=1000;i++)

{

s=0;//此处s=0一定要加,因为前几次循环拦蚂的时候s的值已经改变

k=0;

for(j=1;ji;j++)

{

if((i%j)==0){a[k]=j;k++;}

}

for(h=0;hk;h++)

{

s+=a[h];

}

if(i==s){printf("%d ",i);sum++;}

}

printf("完数的个数:%d\n",sum);

}

时间悉仿太紧,没注意程序的简洁性和效率,这个需要你自己改了!简陆埋

关于完全数c语言程序和完全数c语言程序编写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表