• 欧拉函数代码实现


    欧拉函数ph(n)的意思是全部小于n且与n互质的个数。

    比方说ph(10) = 4{1,,3,7,9与12互质}

    欧拉公式 :    a^ph(m) = 1(mod m);




    代码实现:

    //筛选法打欧拉函数表


    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    #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;
        Init();
        for(int i=1;i<20;i++)
        {
            printf("euler[%d] = %d
    ",i,euler[i]);
        }
        return 0;
    }
    




    直接求解欧拉函数




    #include<iostream>
    #include<algorithm>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    
    using namespace std;
    
    
    //直接求解欧拉函数
    int oula(int n){ //返回euler(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;
    }
    
    /*
    int oula(int n)
    {
        int ret = 1;
        for(int i=2;i*i<=n;i++)
        {
            if(n%i == 0)
            {
                n/=i;
                ret *= i-1;
                while(n%i == 0)
                {
                    n/=i;
                    ret *= i;
                }
            }
        }
        if(n>1)
        {
            ret *= n-1;
        }
        return ret;
    }
    */
    int main()
    {
        int n;
        printf("请输入要查询互质个数的数字
    ");
        while(scanf("%d",&n)!=EOF)
        {
            int ans = oula(n);
            printf("%d的结果为:%d
    ",n,ans);
            printf("请输入要查询互质个数的数字
    ");
        }
        return 0;
    }
    




  • 相关阅读:
    给存储过程传递一个表
    Linker problems with Borland builder
    Python内置函数super的不便之处
    接口测试基础
    接口测试工具篇postman
    接口测试工具篇jmeter
    git的使用
    git与pycharm结合使用
    抓包工具fiddler
    sql 中 case when 语法
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7259314.html
Copyright © 2020-2023  润新知