POJ-2407-Relatives(欧拉函数模板题)

来源:互联网 发布:mysql 根据已有的函数 编辑:程序博客网 时间:2024/06/06 08:53

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

这是欧拉函数的模板题,不懂欧拉函数的话点这里http://blog.csdn.net/qq_38712932/article/details/76472505

#include <cstdio>typedef long long ll;ll oula(ll n){    ll rea=n;    for(int i = 2; i * i <= n; i ++)    {        if(n%i==0)        {            rea=rea-rea/i;            do                n/=i;            while(n%i==0);        }    }    if(n>1)        rea=rea-rea/n;    return rea;}int main(){    ll n;    while(~scanf("%lld",&n),n)        printf("%lld\n",oula(n));    return 0;}
原创粉丝点击