① 用c語言編程:輸出2~100之間所有完數,完數是指該數各因子之和等於該數本身
C語言程序如下:
#include <stdio.h>
int main()
{
long int i,j,sum;
for(i=2;i<100;i++)
{ sum=0;
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
sum=sum+j;
}
}
if(i==sum+1)
printf("%d ",i);
}
}
(1)c語言求完數的編程擴展閱讀:
如果一個數恰好等於它的因子之和,則稱該數為「完全數」。
第一個完全數是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,有約數1、2、4、8、16、31、62、124、248、496,除去其本身496外,其餘9個數相加,1+2+4+8+16+31+62+124+248=496。後面的完全數還有8128、33550336等等。
② C語言編程:輸出10000以內所有的完數
可以定義一個結構,其中的數據成員有:int型變數s,用以存儲各因數的和值;int型數組ys,長度為64,用於存儲各因數的值;還有一個int型變數c,用於存儲因數的個數。然後定義一個函數,該函數的返回值類型為這個結構,輸入參數為一int型待判斷正數。函數的內部,一開始,定義一個結構變數,並對它的s和c初始化為0,然後,進行一個用於查找各因數的循環,找到一個,就將它累加到和值變數s,然後將這個因數存儲到結構的ys數組的c元素中,接著對c進行加一操作,函數體最後,返回定以被賦值了的結構變數。。。。。接下來就是在主函數main中,調用該函數,具體步驟不再詳述,見配圖。
運行結果
③ 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語言程序設計 求完數
#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>
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語言:求完數
//因為沒有說明結束條件,所以暫且以范圍為輸入兩個0為結束條件
#include<stdio.h>
int check(int low, int high);//列印low和high范圍內的完數,並返回完數的個數
int test(int n);//檢測n是否為完數,如果是,則列印它,並返回1,否則,返回0.
int main(){
int low, high;
int count;//count變數為low和high范圍內的完數個數
scanf("%d%d", &low, &high);//輸入范圍
if(low>high || high>10000)//若不滿足要求的條件,退出程序
return (1);
while(low!=0 || high!=0)//low和high均為0,則結束
{
count=check(low, high);//列印low和high之間的完數,並返回個數給count
if(count==0)//如果完數個數為0,則列印no
printf("no");
printf("\n");
scanf("%d%d", &low, &high);//重新輸入范圍low和high
}
return 0;
}
int check(int low, int high){
int t=0;//t為發現的完數個數
int n;
for(n=low;n<=high;n++)
{
if(test(n)==1)
t++;
}
return t;//返回完數個數
}
int test(int n)
{
int i;
int sum=0;//sum為因子之和
for(i=1;i<=n/2;i++)
if(n%i==0)
sum=sum+i;
if(sum==n)
{
printf("%d ", n);//若n為完數,則列印,並返回1
return 1;
}
else//否則,返回0
{
return 0;
}
}
希望對你有用~~
⑦ 求完數的c語言程序
//一個數如果恰好等於它的因子之和,這個數就稱為"完數"。編程找出1000以內的所有完數。
#include <stdio.h>
int* ss(int);//求正整數的質因數
void main()
{
int i,sum=1,j,*a;
for(i=6;i<1000;i++)
{
a=ss(i);
for(j=0;j<500;j++,a++)
sum+=*a;
if(sum==i)
printf("%d\n",i);
}
}
int* ss(int n)
{
int k=2,sum=1,i=0,a[500]={0};
//printf("Please enter a num:\n");
//scanf("%d",&n);
while(n>=k)
{
if(n==k)
{
//printf("%d\n",k);
a[i++]=k;
break;
}
else
if(n%k==0)
{
//printf("%d\n",k);
a[i++]=k;
n/=k;
}
else
if(n%k!=0)
k+=1;
};
return a;
}
⑧ 用C語言編程求完數
那叫完全數,這題可以用三重循環解決,外環一個一個找數,內環試驗是否全部能整除,中環試驗加起來是不是那個數,麻煩得很
⑨ C語言求完數
#include <stdio.h>
int ws(int a,int b,int c)
{
int d;
if (a>c) {
if (a%c==0)
b+=c;
d=ws(a,b,c+1);
}
else if (c==a) {
if (b==a) {
return 1;
}
else return 0;
}
if (c==a-1&&d) {
printf("%d is Prefect number:\t",a);
}
if (d&&(a%c==0)) {
printf("%d ",c);
}
else if (!d) return 0;
if (c==1)
{putchar('\n');
return d;}
}
int main(void)
{
int i;
for (i=1; i<=1000; i++)
ws(i,0,1) ;
return 0;
}
這里舉例了一個求1000以內的完數演算法,供你參考
⑩ C語言求完數的程序
#include<stdio.h>
void main()
{
int m,s,i;
for(m=2;m<1000;m++)
{
s=0;
for(i=1;i<m;i++)
if((m%i)==0)s=s+i;
if(s==m)
{printf("%d=",m);
for(i=1;i<m;i++)
if(m%i==0 && i==1) printf("%d",i); /* 修改 */
elseif(m%i==0)printf("+%d",i); /* 添加 */
printf("\n");
}
}
}