尤拉函式:對正整數n,尤拉函式是小於等於n的數中與n互質的數的數目。
尤拉函式又稱為φ函式。
下面是尤拉函式的一些性質:
如果n為某乙個素數p,則φ§=p-1;
如果n為某乙個素數p的冪次p
ap^a
pa,則φ(p
ap^a
pa)=(p-1)
p (a
−1
)p^(a-1)
p(a−1)
;**如果n為任意兩個互質的數a,b的積,則:φ(a*b)=φ(a)φ(b);
如果p為質數。
*如果i mod p =0,那麼φ(i*p)=φ(i)p;
如果i mod p ≠0,那麼φ(ip)=φ(i)(p-1);
**實現
#includeusing namespace std;
typedef long long int ll;
const int n=10000;
int phi[n+10],prime[n+10],tot,ans;
bool vis[n+10];
void getphi()
for(j=1;j<=tot;j++)
else}}
}int main()
return 0;
}
尤拉函式線性篩法
首先我們知道尤拉函式是1到n 1中與n互質的數的個數。除此之外,我們還要知道一些性質 當p是素數時 1.phi p p 1。不多bb 2.phi p k p 1 p k 1 證明 令n p k,小於 n 的正整數共有 p k 1 個,其中與 p 不互素的個數共 p k 1 1 個,它們是 1 p,2...
線性篩法(尤拉篩法)
嗯在剛剛 沒錯就是在幾分鐘之前 我學會了線性篩法 實在是乙個很好的篩法 正常的篩法,都會對乙個數篩多次 但是尤拉篩法不會 尤拉篩法是用它的最大因數去篩 別跟我說最小質因數,那個很難讓人理解 雖然最小質因數和最大因數是一樣的 我們假設乙個數k,它是t的最大因數 容易知道t是不唯一的 那我們要乘以乙個質...
線性篩法(尤拉篩)
從前有乙個素數篩法叫埃拉託斯特尼篩法,它的思想很簡單,把1 n以內素數的整數倍的數字劃掉,留下的就全是素數,但是它的複雜度是o nlglgn 對於大量不友好資料會跪,於是線性曬登場了。include using namespace std int prime 1100000 primesize,ph...