1 solutions

  • 0
    @ 2025-11-5 20:09:16

    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