問題描述 一個數(shù)如果恰好等于它的因子之和,這個數(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的每個因子放在一維數(shù)組a中。*len是數(shù)組a的長度。*/int fact(int n, int a[], int *len);int main(){int n;while(scanf("%d", &n)!=EOF){Solve(n);}return 0;}輸入 測試數(shù)據(jù)有多個,每個測試數(shù)據(jù)是一個單獨的整數(shù)n。輸出 對每個測試數(shù)據(jù)n,(1)如果n是完數(shù),則輸出它,并且輸出它的因子。輸出樣式如下Yes, its factors are 1 2 3 每個因子后面都有一個空格。(2)如果不是完數(shù),則輸出:No每個測試數(shù)據(jù)的輸出占單獨的一行。輸入樣列 6100輸出樣例 Yes, its factors are 1 2 3 No
1 回答

qq_遁去的一_1
TA貢獻1725條經(jīng)驗 獲得超8個贊
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() //鏈表建立測試
{
int n;
while(scanf("%d", &n) != EOF)
{
Solve(n);
fflush(stdin); //防止輸入字母造成死循環(huán)
}
return 0;
}
添加回答
舉報
0/150
提交
取消