完数c语言
⑴ c语言 完数
#include<stdio.h>
void main()
{
	int t, a=1,m=1;//a表示因子,sum表示因子和
	while(m<1000)
	{ 
		int sum=0;    //应该放在循环里面,每次都要清0
		for(a=1;a< m;a++)      // 这里等号千万不能要,要了它一定能整除,就会没有结果
		{ 
			if(m%a==0)
			{
				t=a;
				sum+=t;
			}
		}
		
		if(sum ==m)   //判断应该在循环for循环外面
			printf("%4d",m);
		m++;
⑵ C语言求完数
/*完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3.(6的因子是1,2,3)*/
#include<stdio.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;j<i;j++)
		{
			if((i%j)==0){a[k]=j;k++;}
		}
		for(h=0;h<k;h++)
		{
			s+=a[h];
		}
		if(i==s){printf("%d  ",i);sum++;}
	}
	printf("完数的个数:%d\n",sum);
}
时间太紧,没注意程序的简洁性和效率,这个需要你自己改了!
⑶ c语言完数判断
1、打开c语言编辑器,新建一个C语言空白文件:

⑷ c语言求解完数!
#include<stdio.h>
int main()
{
	int i,j,sum=0;
	int count=0;//计算完数的和
	for(i=2;i<1000;i++)
	{
		for(j=1;j<i;j++)
		{
			if(i%j==0) sum=sum+j;
		}                                                 
		  if(sum==i) 
		  {
			  printf("%d 是完数\n",i);
			  count+=i;
		  }
              sum=0;                   
	}
	printf("完数和为: %d\n",count);
	return 0;
}
⑸ C语言中的完数是什么意思
欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(p-1)*(2^p-1)   
  其中2^p-1是素数   
    
  完全数(Perfect   number)是一些特殊的自然数:它所有的真因子(即除了本身以外的约数   
  )的和,恰好等于它本身。   
    
  例如:第一个完全数是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,8128。   
    
  古希腊数学家欧几里德是通过   2^(n-1)*(2^n-1)   的表达式发现头四个完全数的。   
    
  当   n   =   2^1*(2^2-1)   =   6   
  当   n   =   2^2*(2^3-1)   =   28   
  当   n   =   2^4*(2^5-1)   =   496   
  当   n   =   2^6*(2^7-1)   =   8128   
  欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(n-1)*(2^n   -1)。   
尽管没有发现奇完数,但是当代数学家奥斯丁·欧尔(Oystein   Ore)证明,若有奇完全   
  数,则其形状必然是12p   +   1或36p   +   9的形式,其中p是素数。在1018以下的自然数中奇完   
  数是不存在的。
⑹ c语言编程题 :判断一个数是不是完数
C语言程序如下:
#include "stdio.h"
int main()
{
int n,i,sum=0;//定义一个存放因子和的变量,以及需要判断的数n,和循环条件用到的i
printf("请输入需要判断的数:");
scanf("%d",&n);//存放需要判断的数n
for(i=1;i<n;i++)//循环条件找出因子并累加
{
if(n%i==0)
sum+=i;
}
if(n==sum)
printf("%d 是完数 ",n);
else
printf("%d 不是完数 ",n);
return 0;
}

(6)完数c语言扩展阅读:
程序思路
假设一个数为n,我们可以用循环条件,让n分别和1,2,3,4,5……n-1进行判断是否能被整除,我们可以通过取余(%)的方法来进行判断。如果判断出来取余结果为0,那么就把这些因子全部加起来,得到因子的和。
接下来,将因子的和与n进行比较,如果相等,那么就是完数,反之不是完数。
判断一个完数,就是运用基本输入函数(scanf),将要判断的数据输入进来,之后运用循环条件来判断。
⑺ 用C语言打印“完数”
// 本程序演示一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数
#include"stdio.h"
main()
{
int i,j,s,sum;
printf("完数:\n") ;
sum=0;
for(i=2;i<=1000;i++)
{  s=0; ;//此处s=0一定要加,因为前几次循环的时候s的值已经改变 。清零
for(j=1;j<i;j++)
{
if(i%j==0)//这一块是如果能够整除,那么就是该数的因子,我们累加起来
{s+=j;
}
}
if(s==i)  //因子的和与原数比较,如果正确就输出
{printf("%d\n",i);
sum++;
 }
 }
 printf("完数的个数:%d\n",sum);
}
⑻ c语言 完数
你的程序我帮你改完了,主要是把if(sum==n)的判断移到循环外面.
求完全数的完整的C语言程序如下:
#include <stdio.h>
int main()
{
int sum,n,i,N;
scanf("%d",&N);
for(n=2;n<=N;n++)
{
 sum=0;
 for(i=1;i<n;i++)
  if(n%i==0)
   sum=sum+i;
 if(sum==n)
 {
  printf("%d its factors are",n);
  for(i=1;i<n;i++)
  {
   if(n%i==0)
    printf(" %d",i);
  }
  printf("\n");
 }
}
return 0;
}
运行结果:
1000
6 its factors are 1 2 3
28 its factors are 1 2 4 7 14
496 its factors are 1 2 4 8 16 31 62 124 248
⑼ 完数 c语言
#include<stdio.h>
voidmain(){
	inta[200];
	intn,i,j,k,s;
	for(n=1;n<=1000;n++){
		j=0;
		s=0;
		for(i=1;i<=n/2;i++){
			if((n%i)==0){
				a[j]=i;
				s+=i;
				j++;
			}
		}
		if(n==s){
			printf("%d是完数,其因数是:
",n);
			for(k=0;k<j;k++)
				printf("%d",a[k]);
			printf("
");
		}
	}
}
⑽ C语言如何编写完数程序
#include<stdio.h> 
void main() 
{ 
int i,t(0),m; 
printf("请输入一个数:"); 
scnaf("%d",&m); 
for(i=1;i<m;i++) 
{ 
if(m%i==0) 
t=t+i; 
} 
if (t==m) 
printf("该数是完数"); 
else 
printf("该数不是完数"); 
}
