zoukankan      html  css  js  c++  java
  • nyoj-291 互素数个数 欧拉函数

     

    LK的数学题

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    LK最近遇到一个问题,需要你帮她一下。一个整数n,求[1,n)中,和n互素的数的个数。
     
    输入
    多组测试数据,每一行有一个整数n(n<1000000001),0表示输入结束。
    输出
    小于n同时和n互素的整数的个数
    样例输入
    7
    12
    0
    样例输出
    6 
    4
    
    开始用了原始方法,果断超时:
     
    #include<stdio.h>
    
    int prim(int a,int b)
    {
        return (b==0)?(a==1):prim(b,a%b);
    }
    
    int main()
    {
        int n;
        while(scanf("%d",&n),n)
        {
            int sum=0;
            for(int i=2;i<=n;++i)
                if(prim(n,i))
                    sum++;
            printf("%d
    ",sum+1);
        }
        return 0;
    }
                    
            
    View Code

    后来听说要用 欧拉定理,又是欧拉定理,看了半天果断还是不太懂。代码和 理论差的不小,算啦,记住代码算啦

    代码:

    #include<stdio.h>
    
    int eular(int n)
    {
        int ret=1,i;
        for(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;
        while(scanf("%d",&n),n)
        {
            printf("%d
    ",eular(n));
        }
    return 0;
    }
  • 相关阅读:
    Kindeditor 代码审计
    tamper参数
    大学站注入点(安全狗)
    sqlmap注入小结
    tamper绕WAF详解
    网站安全狗最新版绕过测试
    大学站防SQL注入代码(ASP版)
    防SQL注入代码(ASP版)
    xss利用和检测平台
    tamper绕WAF小结
  • 原文地址:https://www.cnblogs.com/zibuyu/p/3165347.html
Copyright © 2011-2022 走看看