在java中的Prime生成器

时间:2016-12-17 07:40:53

标签: java primes

我编写了这个程序,用于在两个值之间生成素数。 它适用于整数值。 我试图让它适用于长整数值,但只要输入长整数值,程序就会退出而不进行任何处理。 请帮我查一下代码问题 代码如下。

public class Prime_generator
{
    public static void main(String[] args) {
        Scanner src = new Scanner(System.in);
        Prime_generator obj = new Prime_generator();
        int t, i, a;

        t = src.nextInt();
        if (t > 10)
            System.exit(0);
        long a1[] = new long[t];
        long a2[] = new long[t];

        for (i = 0; i < t; i++) {
            a1[i] = src.nextLong();
            a2[i] = src.nextLong();  
        }
        for (a = 0; a < t; a++)
        {

            if (a1[a] >= 1 && a1[a] <= 1000000000 && a2[a] >= 1 && a2[a] <= 1000000000 && a2[a] - a1[a] <= 100000 && a1[a] <= a2[a])
                obj.prime(a1[a], a2[a]);
            else
                System.exit(0);
        }

    }
    void prime(long m, long n)
    {
        long j,k;
        long c=0L;
        for(j=m;j<=n;j++)
        {
            c=0L;
            for(k=2;k<j/2;k++)
            {
                if((long)j%k==0L)
                c++;

            }
            if(c==0L)
                System.out.println(j);
        }
        System.out.println(" ");

    }
}

1 个答案:

答案 0 :(得分:0)

它是if语句中的大小限制。 你应该使用一个长期限制,你在那里使用一个整数。 这是if长度

的判断示例
if (a1[a] >= 1 && a1[a] <= 1000000000000000l && a2[a] >= 1 && a2[a] <= 1000000000000000l && a2[a] - a1[a] <= 1000000000000000l && a1[a] <= a2[a])