問題描述 :
明明喜歡鑽研各種各樣的數學問題。一天,明明對數的因子產生了興趣,他想把一個數的所有因子都找出來,然後把它們相加再去除以這個數,這樣會得到一個比值。明明想看看不同的數的該比值會有什麼不同,以便做研究。
例如6這個數,它一共有4個因子,分別是:1、2、3、6,把他們相加然後再除以6,即1+2+3+6=12,12/6=2,就可以得到2這個比值。
明明爲了研究,需要得到大量的比值,但是如果通過手動計算比值的話需要花大量的時間,於是明明就想請你幫忙,幫他寫一個程序,能夠求數的比值。 明明的問題可以歸結爲:給你一個數,求所有因子和,把這些因子相加,然後再除以這個數,求得比值。
輸入說明 :
你寫的程序要求從標準輸入設備中讀入測試數據作爲你所寫程序的輸入數據。標準輸入設備中有多組測試數據,每組測試數據僅佔一行,每行僅包括一個正整數n(1≤n≤120),代表所求比值的那個數。每組測試數據與其後一組測試數據之間沒有任何空行,第一組測試數據前面以及最後一組測試數據後面也都沒有任何空行。
輸出說明 :
對於每一組測試數據,你寫的程序要求計算出一組相應的運算結果,並將這一組運算結果作爲你所寫程序的輸出數據依次寫入到標準輸出設備中。每組運算結果爲一個浮點數,就是所求的比值,保留2位小數。每組運算結果單獨形成一行數據,其行首和行尾都沒有任何空格,每組運算結果與其後一組運算結果之間沒有任何空行,第一組運算結果前面以及最後一組運算結果後面也都沒有任何空行。(注:最後求得的比值保留2位小數。) 注:通常,顯示屏爲標準輸出設備。
輸入範例 :
6
10
輸出範例 :
2.00
1.80
c源碼:
#include<stdio.h>
double fun(int n)
{
int i,s=0;
double t,y;
for(i=1;i<=n;i++)
{
if(n%i==0)
s=s+i;
}
y=(double)n;
t=s/y;
return t;
}
int main()
{
int n;
double x;
while(scanf("%d",&n)!=EOF)
{
x=fun(n);
printf("%.2lf\n",x);
}
}