完全數(shù)是指所有真因子之和等于該數(shù)本身的正整數(shù)??梢允褂靡韵翪語(yǔ)言代碼來(lái)找出小于等于n(n為正整數(shù))的完全數(shù):
創(chuàng)新互聯(lián)建站主營(yíng)卓尼網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件定制開(kāi)發(fā),卓尼h5小程序設(shè)計(jì)搭建,卓尼網(wǎng)站營(yíng)銷(xiāo)推廣歡迎卓尼等地區(qū)企業(yè)咨詢(xún)
```c
#include stdio.h
int main() {
int n, i, j, sum;
printf("請(qǐng)輸入一個(gè)正整數(shù)n:");
scanf("%d", n);
for (i = 1; i = n; ++i) {
sum = 0;
for (j = 1; j = i / 2; ++j) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```
解釋如下:
1. 首先,定義變量n、i、j和sum。
2. 要求用戶(hù)輸入n。
3. 使用兩個(gè)嵌套的循環(huán)來(lái)遍歷從1到n的每個(gè)數(shù)字。
4. 內(nèi)部循環(huán)計(jì)算數(shù)字i的所有真因子之和。
5. 如果該總和等于數(shù)字i本身,則輸出該數(shù)字,即它是一個(gè)完全數(shù)。
6. 最后返回0結(jié)束程序。
注意,此代碼中包含了一個(gè)優(yōu)化,即內(nèi)部循環(huán)只需要遍歷1到i的一半,因?yàn)榇笥趇的一半的因子已經(jīng)在之前被計(jì)算過(guò)了。
#includestdio.h
#includetime.h
int?sum(int?n)
{int?s=0,i;
for(i=1;i=n/2;i++)
if(n%i==0)s+=i;
return?s-n;
}
int?main?(?)
{int?i,a[1001];
printf("虧數(shù):\n");
for(i=1;i1001;i++)
{a[i]=sum(i);
if(a[i]0)printf("%5d",i);
}
printf("\n盈數(shù):\n");
for(i=1;i1001;i++)
if(a[i]0)printf("%5d",i);
printf("\n完全數(shù):\n");
for(i=1;i1001;i++)
if(!a[i])printf("%5d",i);
printf("\n花時(shí):%.3f秒\n",clock()/1000.0);
return?0;
}
#includestdio.h?
int?factorsum(int?n)
{
int?i,sum=0;
for(i=1;in;i++)
{
if(n%i==0)
sum+=i;
}
return?sum;?
}
int?main()
{
int?n,m,i,flag;
while(scanf("%d%d",m,n)!=EOF)
{
flag?=1;
for(i=m;i=n;i++)
{
if(i==factorsum(i))
{
if(flag)
{
printf("%d",i);
flag=0;
}
else
{
printf("?%d",i);
}
}
}
printf("\n");
}
return?0;
}
擴(kuò)展資料:
注意事項(xiàng)
1、每一個(gè)完全數(shù)都可以表示成連續(xù)自然數(shù)的和
每一個(gè)完全數(shù)都可以表示成連續(xù)自然數(shù)的和,這些自然數(shù)并不一定是完全數(shù)的因數(shù)。例如:
6=1+2+3 28=1+2+3+4+5+6+7
496= 1+2+3+4+. ? -+29+30+31
2、每一個(gè)完全數(shù)都是調(diào)和數(shù)
我們知道,如果一個(gè)正整數(shù)的所有因子的調(diào)和平均是整數(shù),那么這個(gè)正整數(shù)便是調(diào)和數(shù)。而每 一個(gè)完全數(shù)都是調(diào)和數(shù),例如: 對(duì)于完全數(shù)6 來(lái)說(shuō),1/1+1/2+1/3+1/6=2 對(duì)于完全數(shù)28來(lái)說(shuō),1/1+1/2+1/4+1/7+1/14+1/28=2 3 . 每一個(gè)完全數(shù)都可以表示為2 的一些連續(xù)正整數(shù)次冪之和 每一個(gè)完全數(shù)都可以表示為2 的一些連續(xù)正整數(shù)次冪之和,例如: 6=2^l+2^2
28=2^2+2^3+2^4
8128=2^6+2^7+2^8+2^9+2^10+2^11 +2^ 12
#includestdio.h
void isPerfect(int m){ //定義判斷一個(gè)數(shù)是否為完全數(shù)的函數(shù)isPerfect
int i,sum=0;
for(i=1;i=m/2;i++){
if(m%i==0){
sum+=i;
}
}
if(sum==m){
printf("你輸入的這個(gè)數(shù)是完全數(shù)\n");
}
else
printf("你輸入的這個(gè)數(shù)不是完全數(shù)\n");
}
main(){
int a;
printf("請(qǐng)輸入一個(gè)整數(shù)a:\n");
scanf("%d",a);
isPerfect(a);//調(diào)用這個(gè)函數(shù)
}
網(wǎng)站欄目:c語(yǔ)言嵌套函數(shù)求完全數(shù) c語(yǔ)言嵌套函數(shù)實(shí)例
分享路徑:http://jinyejixie.com/article28/dopcpcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、做網(wǎng)站、App開(kāi)發(fā)、虛擬主機(jī)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)