首页 > 其他 > 详细

欧拉定理

时间:2018-07-25 19:26:45      阅读:138      评论:0      收藏:0      [点我收藏+]
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;
}

 

欧拉定理

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!