說明
2016.4.5 已更新試題,請重新提交自己的程式。
問題描述
給定乙個大於1,不超過2000000的正整數n,輸出尤拉函式,phi(n)的值。
如果你並不了解尤拉函式,那麼請參閱提示。
輸入格式
在給定的輸入檔案中進行讀入:
一行乙個正整數n。
輸出格式
將輸出資訊輸出到指定的檔案中:
一行乙個整數表示phi(n)。
樣例輸入
樣例輸出
提示尤拉函式phi(n)是數論中非常重要的乙個函式,其表示1到n-1之間,與n互質的數的個數。顯然的,我們可以通過定義直接計算phi(n)。
當然,phi(n)還有這麼一種計算方法。
首先我們對n進行質因數分解,不妨設n=p1^a1 * p2^a2 * ... * pk^ak (這裡a^b表示a的b次冪,p1到pk為k個互不相同的質數,a1到ak均為正整數),那麼
phi(n)=n(1-(1/p1))(1-(1/p2))....(1-(1/pk))
稍稍化簡一下就是
phi(n)=n(p1-1)(p2-1)...(pk-1)/(p1*p2*...*pk)
計算的時候小心中間計算結果超過int型別上界,可通過調整公式各項的計算順序避免(比如先做除法)!
#include #include #include using namespace std;
const int maxn=2000000;
int phi[maxn];
void euler1()
//類似於篩選法
void euler3(int n)}}
}int main()
尤拉函式演算法
尤拉函式 1 2 尤拉函式 3小於或等於n的正整數中,與n互質的數的數目4 5 include6 define n 3000005 7 int64 ans n 8void init 打表法 916 17int euler int n 直接求法 1826 27 28if n 1 ret n 1 29 ...
藍橋杯C 試題 演算法提高 尤拉函式
老師出了一道難題,小醬不會做,請你編個程式幫幫他,獎金一瓶醬油 從1 n中有多少個數與n互質?讓路 醬油專用車 坑爹的題面格式化,害得我用 來代替空格,複製到記事本上看就變成正版的了 輸入共一行,表示乙個整數n。輸出共一行,表示從1 n中與n互質的數的個數。60 的資料 10 6 100 的資料 2...
尤拉函式 尤拉定理
尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...