算法训练——Hankson的趣味题( 二 )

< n; ++i) {...} 之外,还可以写 while (n-- > 0) {...} 和 while (--n >= 0) {...}{String[] s1 = reader.readLine().split(" ");int a0 = Integer.parseInt(s1[0]);int a1 = Integer.parseInt(s1[1]);int b0 = Integer.parseInt(s1[2]);int b1 = Integer.parseInt(s1[3]);int p=a0/a1,q=b1/b0,ans=0;int res = 0;for(int x=1;x*x<=b1;x++) {if(b1%x==0){//x是b1的一个因子 if(x%a1==0&&gcd(x/a1,p)==1&&gcd(q,b1/x)==1) res++;int y=b1/x;//y是另一个因子 if(y!=x &&y%a1==0&&gcd(y/a1,p)==1&&gcd(q,b1/y)==1) res++;}}System.out.println(res);}}}
注意:
用Math.sqrt(b1)会超时
【算法训练——Hankson的趣味题】从1遍历循环到b1也会超时