当前位置:首页 » 编程语言 » c语言求1000完数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求1000完数

发布时间: 2022-01-27 00:41:09

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语言编写求1000内的完数。。。

你如果是想学编程,这个程序是很简单的,最好自己写写,然后自己调试一下,那样你才能进步哦。我给你贴一个代码,你自己作参考就是了哈,还有其他的写法

#include<stdio.h>
void main()
{
int n,i,a;
for(n=2;n<=1000;n++)
{
a=0;
for(i=1;i<=n/2;i++)
if(n%i==0)
a=a+i;
if(a==n)
{ printf("%-5d its factors are 1",n);
for(i=2;i<n;i++)
if(n%i==0)
printf(",%d",i);
printf("\n");
}
}
printf("\n");
}

③ c语言求出1到1000之间的完全数,

#include <stdio.h>
#include <math.h>
int main()
{
int a,i;
for(a=1;a<=1000;a++){
int A[100]={0},j;
j=0;
for(i=1;i<a;i++){
if(a%i==0){
A[j]=i;
j++;
}
}
int n,b;
n=j;
b=a;
for(j=j-1;j>=0;j--){
b=b-A[j];
}
if(b==0){
printf("%d=",a);
for(j=0;j<n-1;j++){
printf("%d+",A[j]);
}
printf("%d\n",A[j]);
}
}
return 0;
}

④ c语言 1000以内的完数

#include <stdio.h>

int main()

{

int sum,i,j;

for(i=1;i<=1000;i++)

{

sum=0;

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

if(i%j==0)

sum=sum+j;

if(sum==i)

{

printf("%d its factors are",i);

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

if(i%j==0)

printf(",%d ",j);

printf(" ");

}

}

return 0;

}

如果解决了你的问题的话就麻烦把我的答案选为满意答案!

⑤ c语言求2~1000之间的所有完数

#include "stdio.h"

int perfectNumber(int n)
{
int i;
for(i=2;i<1001;i++)
{
if((i%n)==0)
{
printf("%d\n",i);
}
}
}
int main()
{
int a;
printf("input an number:\n");
scanf("%d",&a);
perfectNumber(a);
}

⑥ C语言求出了1000以内的完数,怎么求他们的和

#include<stdio.h>
int
main()
{
int
i,j,n,s,a[1002];
for(i=2;i<=1000;i++)//初始化将所有的数字都设为和为1
a[i]=1;

for(i=2;i<=500;i++)//一种空间换时间的算法,可以将数字下标代替数字。
for(j=i+i;j<=1000;j=i+j)//筛选并且算出每个数的和。
a[j]=a[j]+i;
s=0;

for(i=6;i<=1000;i++)//计算出完数之和
if(a[i]==i)

s=s+a[i];
printf("%d\n",s);

return
0;
}

⑦ c语言,求一个程序,输出所有1000以内的完数

#include"stdio.h"
intmain()
{
intj,k,sum=0;
for(k=2;k<=1000;k++)
{
sum=0;
for(j=1;j<k;j++)
if(k%j==0)
sum=sum+j;
if(sum==k)
printf("%d",k);
}
return0;
}

⑧ c语言 求1~1000之间的完数

给你正确的程序,你对比着看吧。不是很难理解

#include <stdio.h>
int main()
{
int n=1000;
int r,j,i;
for(i=1;i<n; i++)
{
r = 0;
for(j=1;j<i;j++)
{
if(i%j == 0)
{
r = r + j;
}
}
if(r == i)
{
printf("the result is:%d\n",r);
r = 0;
}
}
return 0;
}