zoukankan      html  css  js  c++  java
  • poj1284 Primitive Roots

    考虑互质的两个数a < n, a是n的原根当且仅当对任意的p < φ(n)有amod n ≠ 1(φ(n)是n的欧拉函数)。

    也即等价于集合ap(p < φ(n)) 与n的简化剩余系相等。

    判定a(< n)是否是n的原跟的方法:

    计算φ(n)的质因数集合{p1, p2, ..., pk) , 若aφ(n)/pi mod n ≠ 1,则a是n的原根。

    这样的a共有φ(φ(n))个。

    http://poj.org/problem?id=1284

     1 #include <cstdio>
     2 #include <cmath>
     3 using namespace std;
     4 int n;
     5 int prime[100], k;
     6 
     7 void solve(){
     8     int m = n - 1;
     9     k = 0;
    10     if(m % 2 == 0){
    11         prime[k++] = 2;
    12         while(m % 2 == 0) m /= 2;
    13     }
    14     int mid = (int)sqrt(m);
    15     for(int i = 3; i <= mid; i += 2){
    16         if(m % i == 0){
    17             prime[k++] = i;
    18             while(m % i == 0) m /= i;
    19             mid = (int)sqrt(m);
    20         }
    21     }
    22     if(m != 1) prime[k++] = m;
    23     int ans = n - 1;
    24     for(int i = 0; i < k; i++) ans /= prime[i];
    25     for(int i = 0; i < k; i++) ans *= prime[i] - 1;
    26     printf("%d
    ", ans);
    27 }
    28 
    29 int main(){
    30     while(~scanf("%d", &n)) solve();
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    数组、向量、矩阵的区别
    vue-cli3没有config.js文件的解决方法
    通用JS六
    通用JS五
    通用JS四
    通用JS三
    vue中sort排序与revers数据反序
    通用JS二
    VueX存储与本地存储以及会话存储的区别
    通用JS(一)
  • 原文地址:https://www.cnblogs.com/astoninfer/p/4805591.html
Copyright © 2011-2022 走看看