當前位置:首頁 » 編程語言 » c語言怎麼求完數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言怎麼求完數

發布時間: 2022-06-19 19:49:03

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以內,肯定不會有太多因子。每個循環開始的時候,初始化數組,加個控制條件,控制數組的下標。自己先嘗試一下吧。
有什麼問題,可以再詳說。