把if((i*i)%n<a)这一句的a改成n/2.0就对了,但为什么我前面算a的时候加个(int)就不对,这两种方法目的不都是舍去小数部分吗
#include<stdio.h> int main(){ int i,count=0,n,a; scanf("%d",&n); a=(int)(n/2); for(i=1;i<=n-1;i++) if((i*i)%n<a) count++; printf("%d\n",count); }