码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉定理

时间:2018-07-25 20:10:32      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:eve   can   stdio.h   man   clu   ring   sample   HERE   正整数   

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的与N互质的数的个数,记作φ(N).我们正好可以用欧拉定理解决这道题
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

int eural(long n) {
    long ans=1;
    for(int i=2;i*i<=n;i++)
     {
        if(n%i==0)
         {
            n/=i;
            ans*=(i-1);
            while(n%i==0) 
            {
                n/=i;
                ans*=i;
            }
            
        }
        
    }
    if(n>1) 
        ans*=(n-1);
    return ans;
}


int main()
{
    long n;
    while (scanf("%ld", &n)!=EOF&&n)
    {
        printf("%ld\n", eural(n));
    }
    return 0;
}

 

欧拉定理

标签:eve   can   stdio.h   man   clu   ring   sample   HERE   正整数   

原文地址:https://www.cnblogs.com/5210ly/p/9367783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!