再次超时。。求简化
Description新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。
Input
第一行是测试数据的组数CN( Case number,1 < CN < 10000 ),接着有CN行正整数N( 1 < n < 32768 ),表示会员人数。
Output
对于每一个N,输出一行新朋友的人数,这样共有CN行输出。
Sample Input
2
25608
24027 Sample Output
7680
16016
我的程序:
#include<stdio.h>
int f(int n)
{
int j,d,k;
d=0;
for (j=2;j<n;j++)
for (k=2;k<=j;k++) if (n%k==0 && j%k==0) {d++;break;}
return d;
}
void main()
{
int i,n,t;
while(scanf("%d",&t)!=EOF)
{
for (i=0;i<t;i++)
{
scanf("%d",&n);
printf("%d\n",n-f(n)-1);
}
}
}
怎么又超时了啊。。。求高手教一些能够简化的方法,对于这些容易超时的题目。