求助,c++欧拉函数,只WA了第一个点。
查看原帖
求助,c++欧拉函数,只WA了第一个点。
474891
YuTa楼主2022/9/9 21:47

代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,ans=0;
ll euler(int n){ 
    int res=n,a=n;
    for(int i=2;i*i<=a;i++){
        if(a%i==0){
            res=res/i*(i-1);
            while(a%i==0) a/=i;
         }
    }
     if(a>1) res=res/a*(a-1);
     return res;
 }
 int main()
 {
	cin>>n;
	for(int i=2;i<=n-1;i++) 
 {
        ans+=euler(i);
}
	cout<<ans*2+3;
	return 0;
 }
2022/9/9 21:47
加载中...