完美數(shù)(Perfect number),又稱完全數(shù)或完備數(shù),是一些特殊的自然數(shù)。該數(shù)所有的真因子(即除了自身以外的約數(shù))的和(即因子函數(shù)),恰好等于本身。如果一個(gè)數(shù)恰好等于它的因子之和,則稱該數(shù)為“完美數(shù)”。
十多年專注成都網(wǎng)站制作,企業(yè)網(wǎng)站建設(shè),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁(yè)制作,對(duì)成都VR全景等多個(gè)方面,擁有豐富的網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn)。
所以根據(jù)定義,可以得到判斷完美數(shù)的程序:
int?is_perfect_number(int?n)//對(duì)n進(jìn)行判斷,如果是完美數(shù),返回1,否則返回0.
{
int?j,sum?=?0;
sum=0;
for(j=1;jn;j++)//對(duì)每個(gè)小于n的正數(shù)進(jìn)行遍歷,
if(n%j==0)//如果是因子,
sum=sum+j;//累加到sum上。
return?sum==n;//返回結(jié)果。
}
兩個(gè)問(wèn)題
1 結(jié)尾多打印了一個(gè)。
u為找到完美數(shù)的個(gè)數(shù)。 所以打印應(yīng)該是從a[0]到a[u-1]
不應(yīng)該打印a[u]
按照你的寫(xiě)法, 循環(huán)應(yīng)該是for(i = 0; i u-1; i ++)
然后下面一行打印a[u-1]
2 沒(méi)有處理u=0的情況。 單獨(dú)判斷一下, u=0時(shí),輸出No
我寫(xiě)了一個(gè),在vs上運(yùn)行正常,供參考:
#include stdio.h
unsigned int inputArg1,inputArg2;
int isPrefect(int);
void printPrefect(int);
int main(void)
{
int count = 0;
int i;
start:
count = 0;
printf("請(qǐng)輸入第一個(gè)參數(shù):\n");
scanf("%d",inputArg1);
printf("請(qǐng)輸入第二個(gè)參數(shù):\n");
scanf("%d",inputArg2);
for (i = inputArg1;i = inputArg2; i ++)
{
if (isPrefect(i))
{
printPrefect(i);
count ++;
}
}
printf("完全數(shù)的個(gè)數(shù)為: %d \n\n\n",count);
goto start;
return 0;
}
int isPrefect(int num)
{
int j;
int sum = 0;
for (j = 1;j = num / 2;j ++)
{
if (num % j == 0)
{
sum += j;
}
}
if (sum == num)
{
return 1;
}
else
{
return 0;
}
}
void printPrefect(int num)
{
int i;
printf("%d = ",num);
for (i = 1;i = num / 2; i ++)
{
if (num % i == 0)
{
printf("%d + ",i);
}
}
printf("\b\b \n");
}
#includestdio.h
int?main()
{
int?i,n,sum;
int?a,b;
scanf("%d%d",a,b);
for(n=a;n=b;n++)
{
sum=0;
for(i=1;in;i++)
{
if(n%i==0)
{sum=sum+i;}
}
if(sum==n)
{printf("%4d",n);}
}
return?0;
}
1、首先打開(kāi)vs 2017軟件,打開(kāi)一個(gè)準(zhǔn)備好的工程,新建一個(gè)C語(yǔ)言文件,先寫(xiě)入頭文件和main函數(shù),里面定義需要的用到的4個(gè)變量。
2、然后先定義一個(gè)for循環(huán)遍歷100以內(nèi)的所有數(shù),利用條件語(yǔ)句進(jìn)行判斷j是不是i的因子,是的話就相加,判斷完成后在判斷因子是不是和原來(lái)的數(shù)相等即可,盤(pán)點(diǎn)完輸出完成判斷的數(shù)字,如此往復(fù)直到判斷完100個(gè)數(shù)為止。
3、最后按Crtl+F10運(yùn)行程序,可以看到100以內(nèi)的完數(shù)都輸出了。
#include stdio.h
void main(){
int s,i,j;
for(s=2;s=1000;s++)
{
j=0;
for(i=s-1;i0;i--)
{
if(s%i==0){j=j+i;}
}
if(s==j)
{
printf("完數(shù):%d the factors are ",s);
for(i=1;is;i++)
{
if(s%i==0){printf("%d,",i);}
}
printf("\n");
}
}
}
當(dāng)前標(biāo)題:c語(yǔ)言函數(shù)打印完美數(shù) c語(yǔ)言輸出完美數(shù)
鏈接URL:http://muchs.cn/article4/hjdgie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站改版、網(wǎng)站排名、動(dòng)態(tài)網(wǎng)站、Google、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)