南陽OJ 333 mdd的煩惱 尤拉函式

2021-07-15 18:05:38 字數 1326 閱讀 4825

mdd的煩惱

時間限制:1000 ms | 記憶體限制:65535 kb

難度:3

描述 今天mdd看到這麼一段話:在數論,對正整數n,尤拉函式是少於或等於n的數中與n互質的數的數目。此函式以其首名研究者尤拉命名,它又稱為euler』s totient function、φ函式、尤拉商數等。 例如φ(8)=4,因為1,3,5,7均和8互質。於是他想用計算機實現尤拉函式的功能,但是他又不想去寫,你能幫幫他嗎?

ps:互質(relatively primeì)又叫互素。若n個整數的最大公因數是1,則稱這n個整數互質。

一開始看到題的時候 我是這麼寫的 思路清晰 但是其實一開始就是知道會超時的 因為n很大

-輸入有多組測試資料組數小於1003, 每組測試資料有n(0

#include

#include

#include

#include

#include

using

namespace

std;

long

long fun( long

long u,long

long v)

if(u==1)

return

1; else

return0;}

int main()

else

continue;}}

}else

else

continue;}}

}// printf("\n");

printf("%lld\n",t1+1);}}

return

0;}

然而後來看了尤拉函式

尤拉函式的值 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn為x的所有質因數,x是不為0的整數φ(1)=1(唯一和1互質的數就是1本身)。(注意:每種質因數只乙個。比如12=2*2*3,那麼φ(12)=12*(1-1/2)*(1-1/3)=4)

然後下面附上正確**:

#include

#include

#include

#include

#include

using

namespace

std;

int oula(int n)}}

if(n>1)

t*=n-1;

return t;

}int main()

return

0;}

是不是覺得這樣寫好多了呢.

NYOJ 333 mdd的煩惱 尤拉函式

解題思路 尤拉函式應用,但是這個題和上個不一樣,不能打表算,因為n的範圍為整形,陣列無法存下,所以只能用最原始的素分解來寫。如下 include include include includeusing namespace std const int n 65540 int prim n void ...

南陽oj 光棍的yy 題目655

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述yy經常遇見乙個奇怪的事情,每當他看時間的時候總會看見11 11,這個很糾結啊 現在給你m個1,你可以把2個1組合成乙個2,這樣就不是光棍了 例如 111 可以拆分為 111 12 21 有三種 輸入第一行輸入乙個n表示有n個測試...

南陽OJ 1170 最大的數

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小明和小紅在打賭說自己數學學的好,於是小花就給他們出題了,考考他們誰nb,題目是這樣的給你n個數 在這n個數之間新增n 1個 或 使結果最大,但不可以打亂原順序,請得出這個結果 如1 3 5 結果是 1 3 5 20 最大 可以...