又找新朋友
既可以暴力,也可以使用数学公式(欧拉函数);
暴力解法:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const int MAX=32768;
int a[MAX];
int main()
{
int i,n,m,j,k,l,ans;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ans=0;
scanf("%d",&m);
for(j=2;j<=m/2;j++)
{
if(m%j==0&&a[j]==0)
for(k=j;k<=m-1;k+=j)//一个数可以被m整除,它的倍数与m的最大公因数就不是1;
{
a[k]=1;
}
}
for(l=1;l<=m-1;l++)
{
if(a[l]==0)
ans++;
}
printf("%d\n",ans);
}
}