題意:求一個數約數為1的個數。
思路:裸裸的歐拉函數。
#include#include #include using namespace std; int eular(int n) { int ans=n; for(int i=2;i*i<=n;i++) { if(n%i==0) { ans-=ans/i; while(n%i==0){ n/=i; } } } if(n>1) ans-=ans/n; return ans; } int main() { int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); printf("%d\n",eular(n)); } return 0; }