(Relax 数论1.8)POJ 1284 Primitive Roots(欧拉函数的应用: 以n为模的本原根的个数phi(n-1))
2013-12-11 12:05
489 查看
/* * POJ_2407.cpp * * Created on: 2013年11月19日 * Author: Administrator */ #include <iostream> #include <cstdio> #include <cstring> using namespace std; typedef long long ll; const int maxn = 1000015; bool u[maxn]; ll su[maxn]; ll num; ll gcd(ll a, ll b) { if (b == 0) { return a; } return gcd(b, a % b); } void prepare() {//欧拉筛法产生素数表 ll i, j; memset(u, true, sizeof(u)); for (i = 2; i <= 1000010; ++i) { if (u[i]) { su[++num] = i; } for (j = 1; j <= num; ++j) { if (i * su[j] > 1000010) { break; } u[i * su[j]] = false; if (i % su[j] == 0) { break; } } } } ll phi(ll x) {//欧拉函数,用于求[1,x)中与x互质的整数的个数 ll ans = 1; int i, j, k; for (i = 1; i <= num; ++i) { if (x % su[i] == 0) { j = 0; while (x % su[i] == 0) { ++j; x /= su[i]; } for (k = 1; k < j; ++k) { ans = ans * su[i] % 1000000007ll; } ans = ans * (su[i] - 1) % 1000000007ll; if (x == 1) { break; } } } if (x > 1) { ans = ans * (x - 1) % 1000000007ll; } return ans; } int main() { prepare(); int n; while (scanf("%d", &n) != EOF) { printf("%lld\n", phi(n-1));//以n为模的本原根的个数为phi(n-1)。而,[1,n]与n互质的整数的个数为phi(n) } return 0; }
相关文章推荐
- (Relax 数论1.8)POJ 1284 Primitive Roots(欧拉函数的应用: 以n为模的本原根的个数phi(n-1))
- POJ1284:Primitive Roots(欧拉函数的应用,奇素数的原根)
- (Relax 数论1.9)POJ 3090 Visible Lattice Points(欧拉函数的应用:计算前n项欧拉数之和)
- (Relax 数论1.8)POJ 2478 Farey Sequence(欧拉函数:前n项欧拉数之和)
- poj 1284 Primitive Roots(数论:欧拉函数)
- poj 1284 Primitive Roots(原根+欧拉函数)
- POJ 1284 Primitive Roots 欧拉函数模板题
- POJ 1284 Primitive Roots(原根个数与欧拉函数)
- poj - 1284 - Primitive Roots - (欧拉函数求原根)
- POJ 1284 Primitive Roots【欧拉函数】
- POJ 1284 - Primitive Roots (原根 + 欧拉函数)
- POJ 1284 Primitive Roots(欧拉函数)
- poj1284 Primitive Roots(原根,欧拉函数)
- POJ 1284 Primitive Roots (原根,欧拉函数)
- POJ 1284 : Primitive Roots - 欧拉函数,原根
- (Relax 数论1.7)POJ 2407 Relatives(使用欧拉函数来求[1,n]中与n互质的整数的个数)
- (Relax 数论1.13)POJ 2909 Goldbach's Conjecture(欧拉筛法的应用:给出一个偶数,要求在这个偶数的范围内,有几对素数和是等于这个偶数的,注意素数对的不重复性! )
- poj 1284 Primitive Roots(欧拉函数,原根定理)
- POJ 1284 Primitive Roots 数论原根。
- poj 1284 Primitive Roots 【原根】【数论】