EpicKai Ответов: 1

Как я могу улучшить свою функцию подсчета простых чисел?


public class Solution {
    public int countPrimes(int n) {
        if(n == 0){
            return 0;
        }
        int count = 0;
        for(int i = 2; i <= n; i++){
            if(!(n % i == 0)){
                count++;
            }
        }
        return count;
    }
}


Что я уже пробовал:

Есть несколько случаев, которые работают для моего кода, но не все из них. Например, когда n присваивается 4, это не считается двумя, так как 4% 2 == 0. Как я могу исправить эту проблему не только в этом случае, но и в других случаях?

1 Ответов

Рейтинг:
2

Patrice T

Цитата:
Как я могу улучшить свою функцию подсчета простых чисел?
нет ничего, что можно было бы улучшить, потому что то, что вы сделали, не работает.
вся логика вашего кода должна быть пересмотрена.
Ваша логика на самом деле говорит, что i является простым числом, если не делителем n- это совершенно неправильно.
Вам нужно создать функцию, которая скажет вам, является ли число простым, и изменить свой код на:
public int countPrimes(int n) {
    if(n == 0){
        return 0;
    }
    int count = 0;
    for(int i = 2; i <= n; i++){
        if(IsPrime( i )){
            count++;
        }
    }
    return count;
}
public int IsPrime(int n) {
    // here you have to check if n is a prime
}


EpicKai

Хорошо, спасибо. Да, я вижу, где моя логика ошибочна с моим кодом.