zoukankan      html  css  js  c++  java
  • POJ 2407 Relatives【欧拉函数】

    <题目链接>

    题目大意:

    Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if there are no integers x > 1, y > 0, z > 0 such that a = xy and b = xz.

    解题分析:

    其实只要看懂题目就会发现这道题是欧拉函数的模板题,即求小于n且与n互质的数的个数。

    欧拉函数的基本性质: >>>

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    
    //直接求解欧拉函数  
    int euler(int n){   
         int res=n,a=n;  
         for(int i=2;i*i<=a;i++){  
             if(a%i==0){  
                 res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出   
                 while(a%i==0) a/=i;  
             }  
         }  
         if(a>1) res=res/a*(a-1);  
         return res;  
    }  
    
    /*
    //筛选法打欧拉函数表   
    #define Max 1000001  
    int euler[Max];  
    void Init(){   
         euler[1]=1;  
         for(int i=2;i<Max;i++)  
           euler[i]=i;  
         for(int i=2;i<Max;i++)  
            if(euler[i]==i)  
               for(int j=i;j<Max;j+=i)  
                  euler[j]=euler[j]/i*(i-1);//先进行除法是为了防止中间数据的溢出   
    }  
    */
    
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF,n)
        {
            printf("%d
    ",euler(n));
        }
        return 0;
    }

    2018-07-30

  • 相关阅读:
    RSA加密算法
    ios 经典错误
    C--指针函数,static
    svn---命令行操作
    iOS中的自由桥接
    ios--socket
    ios错误修改了系统头文件
    ios数据库FMDB
    CoreDate的使用
    ios简单数据库运用
  • 原文地址:https://www.cnblogs.com/00isok/p/9392848.html
Copyright © 2011-2022 走看看