天涯盡頭無(wú)女友
2021-07-02 11:07:47
問(wèn)題描述 一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。例如,6的因子為1、2、3,而6=1+2+3,因此6是“完數(shù)”。預(yù)置代碼 #include<stdio.h>void Solve(int);/*fact函數(shù)如果整數(shù)n是完數(shù),則返回1;否則返回0。把n的每個(gè)因子放在一維數(shù)組a中。*len是數(shù)組a的長(zhǎng)度。*/int fact(int n, int a[], int *len);int main(){int n;while(scanf("%d", &n)!=EOF){Solve(n);}return 0;}輸入 測(cè)試數(shù)據(jù)有多個(gè),每個(gè)測(cè)試數(shù)據(jù)是一個(gè)單獨(dú)的整數(shù)n。輸出 對(duì)每個(gè)測(cè)試數(shù)據(jù)n,(1)如果n是完數(shù),則輸出它,并且輸出它的因子。輸出樣式如下Yes, its factors are 1 2 3 每個(gè)因子后面都有一個(gè)空格。(2)如果不是完數(shù),則輸出:No每個(gè)測(cè)試數(shù)據(jù)的輸出占單獨(dú)的一行。輸入樣列 6100輸出樣例 Yes, its factors are 1 2 3 No
1 回答

qq_遁去的一_1
TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
void Solve(int num)
{
int sum = 0;
int i = 0;
if (num == 0)
{
printf("No\n");
}
else if (num == 1)
{
printf("Yes, its factors are %d\n", num);
}
else
{
for (i = 1; i < num; i++)
{
if (num % i == 0)
{
sum += i;
}
}
if (sum == num)
{
printf("Yes, its factors are ");
for (i = 1; i < num; i++)
{
if (num % i == 0)
{
printf("%d ", i);
}
}
printf("\n");
}
else
{
printf("No\n");
}
}
}
int main() //鏈表建立測(cè)試
{
int n;
while(scanf("%d", &n) != EOF)
{
Solve(n);
fflush(stdin); //防止輸入字母造成死循環(huán)
}
return 0;
}
添加回答
舉報(bào)
0/150
提交
取消