zoukankan      html  css  js  c++  java
  • POJ 2407 Relatives

    Description

    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.

    Input

    There are several test cases. For each test case, standard input contains a line with n <= 1,000,000,000. A line containing 0 follows the last case.

    Output

    For each test case there should be single line of output answering the question posed above.

    Sample Input

    7
    12
    0
    

    Sample Output

    6
    4

    题目大意:计算φ(n)。

    其实就是调用欧拉函数的公式。

    这里简单说一下欧拉函数。

    欧拉函数是数论中的一个经典内容,其中φ(n)表示小于等于n的所有与n互质的数的个数。注意是个数。

     

    有三个极其重要的结论:

    φ(1)=1;

    φ(a)(a为质数)=a-1;

    φ(a^p)(a为质数)=a^p-a^(p-1)=(a-1)*(a^(p-1));(容斥原理)

    然后就能推导出一个公式,大体长这个样子:

    φ(n)=n*∏(1-1/ai)。

     

    剩下的工作就是模拟了(然鹅蒟蒻并不会)

     

    不过还是搞到了大佬的代码,勉勉强强地看懂了:

    #include<cstdio>
    using namespace std;
    int euler(long long n)
    {
        int temp = n;
        for( int i = 2;i <= n;i++)
        {
            if( n % i == 0)
            {
                temp -= temp / i;
                while( n % i == 0)
                    n /= i;
            }
        }
        return temp;
    }
    int main()
    {
        long long n;
        long long cnt;
        while(scanf("%lld",&n) && n)
        {
            cnt=0;
            cnt=euler(n);
            printf("%lld
    ",cnt);
        }
        return 0 ;
    }
  • 相关阅读:
    ef左联三张表案例
    sql常用语句汇总
    最初的ajax案例
    asp.net mvc请求响应模型原理回顾
    viewstate cookie和session原理回顾
    一般处理程序装配数据到html页的原理
    asp.net页面生命周期回顾
    rocketMQ 消息的 tag
    rocketMQ 订阅关系
    rocketMQ retry 消息的实现
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11255548.html
Copyright © 2011-2022 走看看