1.當需要求1到n的尤拉數之和時用線性方法(本題)
2.當需要求單個尤拉數但資料很大用標準方法求
例如:線性的方法求尤拉數**(模板):
#include
#include
#define ll long long
const
int maxn=1000010;
int dp[maxn];
ll a[maxn];
int main()
}a[1]=1;
a[2]=1;
for(int i=3;i<=maxn;i++)
a[i]=a[i-1]+dp[i];
int n;
while(~scanf("%d",&n),n)
return
0;}
普通方法求尤拉數:
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace
std;
int a[4000],c[5000],d[40010];
int cnt;
void init()//篩選出質數
}}void fen(int n)//分解質因數
}if(n>1)
a[cnt++]=n;
}int main()
poj 2478 線性篩素數 尤拉函式
由於2 n 10 6,所以一般的求尤拉函式方法用不上,而我們可以根據他的乙個性質 設a為n的質因數,若 n a 0 n a a 0 則有e n e n a a 若 n a 0 n a a 0 則有 e n e n a a 1 進行求解,而現在首要的任務就是求質因數a,我們可以利用線性篩素數時產生的n...
尤拉函式 POJ 2478 尤拉篩法
通式 phi x x 1 frac 1 frac 1 frac cdots 1 frac 若n是質數p的k次冪 phi n p k p p 1 p 因為除了p的倍數外,其他數都跟n互質。設n為正整數,以 phi n 表示不超過n且與n互素的正整數的個數,稱為n的尤拉函式值,這裡函式 n n,n n ...
poj 2478(快速求解尤拉函式優化版。。。)
之前一直在用 void get eular memset eul,0,sizeof eul eul 1 1 for int i 2 i 然後按照優化方案來寫程式。進入了100ms以內了。嗨皮。include include includeusing namespace std const int m...