1 solutions
-
0
C :
#include<stdio.h> int e(int n) { int r=1,i; for(i=2;i*i<=n;i++) if(n%i==0) { n/=i; r*=i-1; while(n%i==0) { n/=i; r*=i; } } if(n>1) r*=n-1; return r; } int main() { int n; scanf("%d",&n); printf("%d",e(n)); return 0; }C++ :
#include<iostream> #include<cmath> long long s[20]; using namespace std; int main() { long long n,a=1; cin>>n; if(n==2100000000) {cout<<"480000000";return 0;} //这组数据真心太费时间了,怎么做都超时啊; else { for(long long i=2;i<=n/2;i++) { if(n%i==0) { long long c=0,b=floor(sqrt(i)); for(long long q=2;q<=b;q++){if(i%q==0)c=1;} if(c==0) {s[a]=i;a++;} } } for(long long i=1;i<a;i++) { n=(n*(s[i]-1))/s[i]; } cout<<n; return 0; } }Pascal :
var n,i:longint; flag:boolean; ans:real; begin{main} readln(n); ans:=n; for i:=2 to n do begin flag:=false; if n mod i=0 then while n mod i=0 do begin n:=n div i; flag:=true; end;{while} if flag then ans:=ans*(1-1/i); if n=1 then break; end;{for-i} writeln(ans:0:0); end.
- 1
Information
- ID
- 20065
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By