Primes之和 - 为什么我的代码返回0?

bob*_*get 2 java primes

我正在尝试回答项目Euler#10,即找到1-2000000之间的素数之和.每次我运行我的代码,它给我0,我无法弄清楚为什么.

public static boolean isPrime (int n) 
{
    double a = Math.sqrt(n);
    for(int i = 1; i < a; i++){
        if(n % i == 0){
            return false;
        }
    }
    return true;
}

public static void main (String[] args)
{
    long sum = 0;
    for(int i = 2; i < 2000000; i++){
        if(isPrime(i)==true){
            sum+= i;
        }
    }
    System.out.println(sum);
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 15

更改

for (int i = 1; i < a; i++) {
Run Code Online (Sandbox Code Playgroud)

for (int i = 2; i < a; i++) {
Run Code Online (Sandbox Code Playgroud)

任何数字都可以被1整除,即使是素数.

根据您当前的代码,没有数字是素数.