2478 Farey Sequence 求尤拉函式,利用素數篩選法
#include<iostream>
#include<stdio.h>
using namespace std;
int a[1000005];
long long sum[1000005];
void phi_table(int n , int * phi)//篩選法求尤拉函式
{
for(int i=2 ; i<= n; i++) phi[i] = 0;
phi[1]= 1;
for(int i =2; i<=n ;i ++)
if(!phi[i])
for(int j = i ; j<=n; j+=i)
{
if(!phi[j]) phi[j] = j;
phi[j] = phi[j] /i*(i-1);
}
}
int main()
{
int n;
phi_table(1000001,a);
sum[2]=0;
for(int i=2;i<=1000001;i++)
sum[i] = sum[i-1]+ a[i];
while(scanf("%d",&n),n)
printf("%I64d/n",sum[n]);
}
相關推薦
2478 Farey Sequence 求尤拉函式,利用素數篩選法
#include<iostream>#include<stdio.h>using namespace std;int a[1000005];long long sum[1000005];void phi_table(int n , int * phi)
poj 2478 Farey Sequence(尤拉函式)
Farey Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13204 Accepted: 5181 Description The Farey Sequence Fn fo
Farey Sequence——(篩法求尤拉函式)
傳送門 A - Farey Sequence Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d &
尤拉函式,求互質;
尤拉函式 :尤拉函式是數論中很重要的一個函式,尤拉函式是指:對於一個正整數 n ,小於 n 且和 n 互質的正整數(包括 1)的個數,記作 φ(n) 。 完全餘數集合:定義小於 n 且和 n 互質的數構成的集合為 Zn ,稱呼這個集合為 n 的完全餘數集合。 顯然 |Zn|
【數論】線性篩素數,線性篩尤拉函式,求前N個數的約數個數
先來最基本的線性篩素數,以後的演算法其實都是基於這個最基本的演算法: #include<stdio.h> #include<string.h> #define M 10000000 int prime[M/3]; bool flag[M]; void
#尤拉函式,數論#hdu 6434 Problem I. Count
題目 求∑i=1n∑j=1n[gcd(i+j,i−j)==1]\sum_{i=1}^{n}\sum_{j=1}^n[gcd(i+j,i-j)==1]i=1∑nj=1∑n[gcd(i+j,i−j)==
Smith Numbers(尤拉函式,容斥原理)
While skimming his phone directory in 1982, Albert Wilansky, a mathematician of Lehigh University,noticed that the telephone number of his brother-in-law
無向圖求尤拉路徑,迴路 模板(Hierholzer 演算法)
定義: 歐拉回路:每條邊恰好只走一次,並能回到出發點的路徑 尤拉路徑:經過每一條邊一次,但是不要求回到起始點 歐拉回路存在性的判定: 無向圖 每個頂點的度數都是偶數,則存在歐拉回路。 有向圖 每個節頂點的入度都等於出度,則存在歐拉回路。 尤拉路徑存在性的判定:
The Euler function(hdoj2824)(快速求尤拉函式)
The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4757 Acce
埃拉托色尼素數篩選法的證明及原理
一、什麼是素數? 素數又稱為質數。素數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。素數在日常中最多的應用就是加密演算法,例如RSA加密演算法就是基於來實現的。RSA演算法會隨機生成兩個1024位的質數相乘,要破解密碼必須對乘積做質因數分解,而1024位的質因數分解是非常困難的。 二、如
求出100以內的所有素數--篩選法和根號法
/** * 篩選法求出100以內的所有素數,即從小到大篩去一個已知素數的所有倍數 * * 素數:只能被1和本身整除 * * 根號法:素數不能被2~sqrt(n)整除 */ package t; import java.util.*; import java.
求N(10^14)以內與N互質的數的和(容斥原理,或者尤拉函式)
#include <iostream> #include <cstring> #include <algorithm> #include <cmath>
【HDU】5321 Beautiful Set【列舉k求貢獻,尤拉函式應用】
mycode: #include <stdio.h> #include <string.h> #include <vector> #include <algorithm> using namespace
POJ2478 Farey Sequence(尤拉函式,打表)
Farey Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13435 Accepted: 5272 Description The Farey Sequence Fn
51nod 1040 求1-n這n個數,同n的最大公約數的和(尤拉函式)
題目:給出一個n,求1-n這n個數,同n的最大公約數的和。比如:n = 6 1,2,3,4,5,6 同6的最大公約數分別為1,2,3,2,1,6,加在一起 = 15 思路:一個數與n的最大公約數肯定是n的因子中的一個,所以只需要列舉n的每一個因子x,然
一類尤拉函式相關的求和式推導
\(\\\) 寫在前面 因為最近做了不少和尤拉函式相關的求和問題,而這一類求和的推導有沒有涉及到反演和卷積,所以單獨寫一寫。 給出的題目順序與難度大致無關,是按照個人做題的順序安排的。 再次宣告尤拉函式的定義:\(\varphi(x)\) 表示 \([1,x]\) 裡的所有整數中,與 \(x\)
【51nod】尤拉函式之和(數論,杜教篩)
文章目錄 題目 分析 一個性質 嘗試遞推 分塊 打表 線性篩尤拉函式 一個性質 線性篩 程式碼 題目 12
算個尤拉函式給大家助助興(米勒拉賓(判斷素數)+Pollard_rho(求一個大數的因子 ))
這篇部落格講的很好: 題目描述 木南有一天學習了尤拉函式,知道了對正整數n,尤拉函式是小於n的正整數中與n互質的數的數目。那麼他定義f(n)為有多少個小於等於n的數可以整除n。 例如f(4)=3。(可以被1,2,4整除)。 那麼你可以寫個程式計算一下f(n)嗎?
求一個數的質因子以及尤拉函式
求一個數的質因子 程式碼:#include<stdio.h> int main() { long long a[100],num,i,n; while(~scanf("%I64d",&n)) { num=0;
數論線性篩總結 (素數篩,尤拉函式篩,莫比烏斯函式篩,前n個數的約數個數篩)
線性篩 線性篩在數論中起著至關重要的作用,可以大大降低求解一些問題的時間複雜度,使用線性篩有個前提(除了素數篩)所求函式必須是數論上定義的積性函式,即對於正整數n的一個算術函式 f(n),若f(1)=1,且當a,b互質時f(ab)=f(a)f(b),在數論上就稱它為積性