當前位置:首頁 » 編程語言 » 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;
}