完美數(shù)(Perfect number),又稱完全數(shù)或完備數(shù),是一些特殊的自然數(shù)。該數(shù)所有的真因子(即除了自身以外的約數(shù))的和(即因子函數(shù)),恰好等于本身。如果一個數(shù)恰好等于它的因子之和,則稱該數(shù)為“完美數(shù)”。
十多年專注成都網(wǎng)站制作,企業(yè)網(wǎng)站建設(shè),個人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁制作,對成都VR全景等多個方面,擁有豐富的網(wǎng)站設(shè)計經(jīng)驗。
所以根據(jù)定義,可以得到判斷完美數(shù)的程序:
int?is_perfect_number(int?n)//對n進(jìn)行判斷,如果是完美數(shù),返回1,否則返回0.
{
int?j,sum?=?0;
sum=0;
for(j=1;jn;j++)//對每個小于n的正數(shù)進(jìn)行遍歷,
if(n%j==0)//如果是因子,
sum=sum+j;//累加到sum上。
return?sum==n;//返回結(jié)果。
}
兩個問題
1 結(jié)尾多打印了一個。
u為找到完美數(shù)的個數(shù)。 所以打印應(yīng)該是從a[0]到a[u-1]
不應(yīng)該打印a[u]
按照你的寫法, 循環(huán)應(yīng)該是for(i = 0; i u-1; i ++)
然后下面一行打印a[u-1]
2 沒有處理u=0的情況。 單獨判斷一下, u=0時,輸出No
我寫了一個,在vs上運行正常,供參考:
#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("請輸入第一個參數(shù):\n");
scanf("%d",inputArg1);
printf("請輸入第二個參數(shù):\n");
scanf("%d",inputArg2);
for (i = inputArg1;i = inputArg2; i ++)
{
if (isPrefect(i))
{
printPrefect(i);
count ++;
}
}
printf("完全數(shù)的個數(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、首先打開vs 2017軟件,打開一個準(zhǔn)備好的工程,新建一個C語言文件,先寫入頭文件和main函數(shù),里面定義需要的用到的4個變量。
2、然后先定義一個for循環(huán)遍歷100以內(nèi)的所有數(shù),利用條件語句進(jìn)行判斷j是不是i的因子,是的話就相加,判斷完成后在判斷因子是不是和原來的數(shù)相等即可,盤點完輸出完成判斷的數(shù)字,如此往復(fù)直到判斷完100個數(shù)為止。
3、最后按Crtl+F10運行程序,可以看到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");
}
}
}