RelativesTime
limit:MS
Memory Limit:65536KB
64bit IO Format:%i64d &%i64u SubmitStatusPracticePOJ 2407Appoint Description:System Crawler (2015-04-04)
Description
Given N, a positive integer, how many positive integers less than n is relatively prime to n? Integers A and B are relatively prime if there is no integers x > 1, y > 0, z > 0 such that a = XY and B = x Z.
Input
There is several test cases. For the test case, the standard input contains a line with n <= 1,000,000,000. A line containing 0 follows.
Output
For all test case there should is single line of output answering the question posed above.
Sample Input
7120
Sample Output
64
Test instructions: Give a number n, and the number of the N-ary is not greater than N.
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include < iostream> #include <sstream> #include <algorithm> #include <set> #include <queue> #include <stack> #include <map>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const double pi= ACOs ( -1.0); int Euler (int n) { int m=floor (sqrt (n+0.5)); int ans=n; for (int i=2;i<=m;i++) { if (n%i==0) { ans=ans/i* (i-1); while (n%i==0) { n/=i;}} } if (n>1) ans=ans/n* (n-1); return ans;} int main () { int n; while (~SCANF ("%d", &n)} { if (!n) break; printf ("%d\n", Euler (n)); } return 0;}
POJ 2407-relatives (Euler function value for an integer)