сумма всех простых чисел от 100 до 200 - PullRequest
0 голосов
/ 29 апреля 2018

Я действительно схожу с ума ... Код, который я написал, отображает все виды "суммы" и "числа" между фактическим последним результатом, который я хочу отобразить с помощью System.out.print(...). Может кто-то помочь мне, пожалуйста? Что я сделал не так, чтобы все отображалось?

public class Prim {
    public static void main(String[] args) {

        int end = 11;
        int count = 1;
        long sum = 0;

        for (int number = 10; count<=end; number++) {
            if (isPrim(number)) { 
               sum = sum + number;
               count++; 
               System.out.println(sum);
            }
        }
    }

    public static boolean isPrim(int number){
        for (int i=2; i<number; i++) {
            if (number % i == 0) {
            }
        }
        return true; 
    }
}

Ответы [ 3 ]

0 голосов
/ 29 апреля 2018

Несколько вещей.

Во-первых, ваш isPrim может быть оптимизирован так, что i увеличивается только до sqrt(number).

Во-вторых, вам нужно return false, если (number%i == 0) равно true. Прямо сейчас он всегда возвращает true, поэтому ваш код выводит все суммы.

В-третьих, вам нужно изменить istPrimeZahl на isPrim (или наоборот), поскольку вы нигде не определили istPrimeZahl.

В-четвертых, вы можете изменить sum = sum + number на sum += number.

Наконец, вы, вероятно, захотите переместить System.out.print строку на две строки ниже, чтобы она печатала sum после цикла, а не на каждой итерации цикла.

(Кроме того, вы можете изменить цикл for, чтобы он начинался с 100 , а не 10 :))

Если вы хотите финальную версию, я вставил ее сюда:

public class Prim {
    public static void main(String[] args) {

        int end = 200;
        int count = 0;
        long sum = 0;

        for (int number = 100; number<=end; number++) {
            if (isPrim(number)) { 
               sum += number;
               count++; 
               System.out.println(sum);
            }
        }
    }

    public static boolean isPrim(int number){
        for (int i=2; i*i<=number; i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true; 
    }
}
0 голосов
/ 29 апреля 2018

Для суммы простых чисел от 100 до 200 попробуйте этот код:

public class Primzahlen {

    public static void main(String[] args) {
        int sum = 0;
        for (int i = 100; i < 200; i++)
            if (isPrim(i))
                sum += i;
        System.out.print(sum);
    }

    public static boolean isPrim(int num) {
        for (int i = 2; i <= Math.sqrt(num); i++)
            if (num % i == 0)
                return false;
        return true;
    }
}
0 голосов
/ 29 апреля 2018

В функции isPrim отсутствует оператор return false после оператора if. Это означает, что isPrim всегда будет возвращать true, и, следовательно, каждое число будет записываться в консоль.

System.out.print также находится внутри цикла for, поэтому он будет печатать обновленную сумму каждый раз. Неясно, является ли это намеренным, но если вы хотите получить только один результат, его также следует переместить на две строки ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...