数字(???)

版权声明:正在学习中,有错误欢迎指出。感谢比❤❤~ https://blog.csdn.net/gx17864373822/article/details/79976856

Problem Description
定义f(x) = {比x小,不可以被x整除并且不和x互质的数的个数}(x为正整数)。
当f(x) 是奇数的时候我们称x为“奇真数”。
给出两个数x,y求区间[x,y]内的“奇真数”的个数。

Input
第一行输入一个数N代表测试数据个数(N<=20)。接下来N行每行两个正整数x , y ( 0 < x <= y < 2^31)。

Output
对于每个测试数据输出“奇真数”的个数,每行输出一个结果。

Sample Input
2
1 1
1 10
Sample Output
0
4

package pp;

import java.util.*;


public class Main {

    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int n = sc.nextInt();
       for(int i = 0; i < n; i++) {
           long a = sc.nextLong();
           long b = sc.nextLong();
           System.out.println(f(b) - f(a-1));
       }
       sc.close();
    }

    public static long f(long x) {
        if(x <= (long)2) {
            return 0;
        }
        else {
            return x/2-1 +( (long)Math.sqrt((long)x*1.0) % 2 == 1 ? 0 : -1);

        }
    }
}
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页