⑴ c语言编程:求(2,2000)中的完数
完数,即完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。其所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于本身。
根据该定义 可以得出判断完数的函数如下:
#include<stdio.h>
intis_perfect_number(intn)
{
inti,s=0;
for(i=1;i<=n/2;i++)
if(n%i==0)s+=i;//统计所有真因子的和。
if(s==n)return1;//如果与原值相等,则该数为完数。
return0;//不是完数。
}
根据该函数,只需要对需要打印的范围内2 ~2000做遍历,并逐一调用该函数判断,如果返回1则打印即可。
完整代码如下:
#include<stdio.h>
intis_perfect_number(intn)
{
inti,s=0;
for(i=1;i<=n/2;i++)
if(n%i==0)s+=i;//统计所有真因子的和。
if(s==n)return1;//如果与原值相等,则该数为完数。
return0;//不是完数。
}
intmain()
{
intn;
for(n=3;n<2000;n++)
if(is_perfect_number(n))printf("%d,",n);
}
⑵ C语言如何判断这个数是完数
1、打开c语言编辑器,新建一个C语言空白文件:
⑶ C语言:怎么求完数
先定义一个数组a[]放各因数——一定有“1”
然后定义一个数组b[999]={1,2,3,4,5……}可以用for语句赋值int i,p;
for(i=0;i<=998;i++)
{for(p=1;p<=999;p++);
b[i]=p;}放1——999
然后用各各数——可再定义数组——去剩b[]
得余数为零的放到a[]再各各无素相加等于原来的剩数的,
就为真——用一个循环,一个int变量加一,直到 结束
⑷ C语言程序设计 求完数
#include<stdio.h>
#include<math.h>
intw(intx)
{
inti,sum=1;
for(i=2;i<=sqrt(x);i++)
{
if(x%i==0)
{
sum+=i+x/i;
}
}
if(sum==x&&x!=1)
{
return1;
}
else
{
return0;
}
}
intmain()
{
inti,n,m,a[10],j;
scanf("%d%d",&n,&m);
for(i=n,j=0;i<=m;i++)
{
if(w(i))
{
a[j++]=i;
}
}
if(j==0)
{
printf("NIL ");
}
else
{
for(i=0;i<j;i++)
{
if(i<j-1)
{
printf("%d",a[i]);
}
else
{
printf("%d",a[i]);
}
}
}
return0;
}
⑸ C语言求完全数~~
#include<stdio.h>
void isPerfect(int m){ //定义判断一个数是否为完全数的函数isPerfect
int i,sum=0;
for(i=1;i<=m/2;i++){
if(m%i==0){
sum+=i;
}
}
if(sum==m){
printf("你输入的这个数是完全数\n");
}
else
printf("你输入的这个数不是完全数\n");
}
main(){
int a;
printf("请输入一个整数a:\n");
scanf("%d",&a);
isPerfect(a);//调用这个函数
}
⑹ 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语言完数的计算
#include"stdio.h"
intmain(intargc,char*argv[]){
inta[50]={1,},i,j,k,m,n,s;
printf("Inputn(intn>1)... n=");
if(scanf("%d",&n)!=1||n<2){
printf("Inputerror,exit... ");
return0;
}
for(i=6;i<=n;i++){
for(k=i>>1,s=m=1,j=2;j<=k;j++)
if(i%j==0)
a[m++]=j,a[m]=0,s+=j;
if(s==i){
printf("%6d=1",s);
for(s=1;a[s];printf("+%d",a[s++]));
printf(" ");
}
}
return0;
}
运行样例:
⑻ 用C语言求完数
//有三个,6,28,496
#include<stdio.h>
void main()
{
int i,j,k,sum;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<=i/2;j++)
if(i%j==0) sum+=j;
if(sum==i)
{
printf("%d\t的因子是:",i);
for(j=1;j<=i/2;j++)
if(i%j==0) printf("%d ",j);
printf("\n");
}
}
return;
}
⑼ 用C语言求1000以内的完数
完数,即完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。其所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于本身。
根据该定义 可以得出判断完数的函数如下:
#include <stdio.h>
int is_perfect_number(int n)
{
int i,s=0;
for(i = 1; i <=n/2; i ++)
if(n%i == 0) s+= i;//统计所有真因子的和。
if(s == n) return 1;//如果与原值相等,则该数为完数。
return 0;//不是完数。
}
根据该函数,只需要对需要打印的范围内1 ~1000做遍历,并逐一调用该函数判断,如果返回1则打印即可。
完整代码如下:
#include <stdio.h>
int is_perfect_number(int n)
{
int i,s=0;
for(i = 1; i <=n/2; i ++)
if(n%i == 0) s+= i;//统计所有真因子的和。
if(s == n) return 1;//如果与原值相等,则该数为完数。
return 0;//不是完数。
}
int main()
{
int n;
for(n = 1; n < 1000; n++)
if(is_perfect_number(n)) printf("%d,",n);
}
⑽ C语言求完数。
思路是正确的,但是程序你写错了点地方。while循环体内,改成sum+=a,你原来的写法,sum=+b,第一不对,第二即使符合条件,根据if中的判断条件,b也恒等于0。
第二个问题,可以使用一个静态数组解决,因为完数在1000以内,肯定不会有太多因子。每个循环开始的时候,初始化数组,加个控制条件,控制数组的下标。自己先尝试一下吧。
有什么问题,可以再详说。