Java中n个质数的总和

时间:2018-10-12 02:22:43

标签: java

我有这个问题,如何制作此代码,处理质数项的数量并添加它们,目前,它的作用是求一个上限,然后从中添加所有现有的数,例 x=3.52871693, y=5.65001807,然后我将总结5,并得到2 + 3 + 5,但是我想添加10质数,例如5,然后 5

首先,谢谢您:

2, 3, 5, 7, 11 = 28

4 个答案:

答案 0 :(得分:0)

使用计数器来计数已经添加的素数,而不是循环li次。

Scanner sc = new Scanner (System.in);
int li, suma=0;
int cont = 0;
int counter = 0;
System.out.println("Ingrese la longuitud de los numeros primos a sumar");
li= sc.nextInt();

for(int i = 2; counter < li; i++)
{
    cont = 0;
    for (int j = 1; j <= i; j++)
    {
        if(i % j == 0)
        {
            cont++;
        }
    }
    if(cont== 2 )
    {
        suma= suma + i;
        counter++;
    } 
}
System.out.print(suma + " ");

答案 1 :(得分:0)

我将有一种单独的方法来检查数字是否为质数,并找到所需数的质数之和,如下所示:

public static void main(String[] args) {
    Scanner sc = new Scanner (System.in);
    int li, suma = 0;
    int cont = 0;  // track prime count
    System.out.println("Ingrese la longuitud de los numeros primos a sumar");
    li = sc.nextInt();
    int i = 2;  // start with 2 since least prime is 2
    while (li > cont) {
        boolean isPrime = true;
        for (int divisor = 2; divisor <= Math.sqrt(i); divisor++) {
            if (i % divisor == 0) {
                isPrime = false;
                break; 
            }
        }
        if (isPrime) { // if prime, add to sum and increase count
            suma += i;
            cont++;
        }
        i++;
    }
    System.out.print(suma + " ");
}

答案 2 :(得分:0)

首先,您应该编写一个检查数字是否为素数的方法。 之后,使用循环语句获取第一个count素数。然后只求和。 希望对您有帮助

public static void  main (String args[]) {
    int count = 3;
    int sum = 0;
    int n = 2;
    for (int i = 0; i < count; i++) {
        if (n == 2) {
            sum += n;
            n++;
        } else {
            while (!isPrime(n)) {
                n = n + 2;
            }
            sum += n;
            n = n + 2;
        }
    }
    System.out.println(sum);
}

public static boolean isPrime(int i) {
    if (i == 2 || i == 3) {
        return true;
    } else {
        if (i % 2 == 0) return false;
        for (int j = 3; j <= (i / 2) + 1; j = j + 2) {
            if (i % j == 0) return false;
        }
        return true;
    }
}

答案 3 :(得分:0)

您的意思是计算第一个li素数之和吗?

int count = 0; // add a count to represent the number of prime number
for (int i = 2; i <= 100000000; i++) { // loop to a very large number
    for (int j = 1; j <= i; j++) {
        if (i % j == 0) {
            cont++;
        }
    }
    if (cont == 2) {
        suma = suma + i;
        count++;
        if (count == li) break; // break if the number of prime number is li
    }
}