System.out.println(2);
for (byte i = 3; i < 100; i += 2) {
// вся та же кухня, но без проверок делимости на 2
}
class PrimeNumbers {
public static void main(String[] args) {
int n = 100;
boolean[] isPrime = new boolean[n + 1];
for (int i = 2; i <= n; i++) {
isPrime[i] = true;
}
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
System.out.println(i);
}
}
}
}
Этот алгоритм работает быстрее, чем ваш исходный код, и более эффективно находит все простые числа в заданном диапазоне. class PrimeNumbers {
public static void main(String args[]) {
int[] mas = new int[101];
int len = mas.length;
for(int i = 2; i for(int j = 2*i;j if(mas[j]==0) {
mas[j] = 1;
}
}
}
for(int i = 2;i if(mas[i]==0) {
System.out.println(i);
}
}
}
}
Понял фокус ?
Нет смысла делить на 6 и 9, если ты делишь его на 3
Значит инкрементом не воспользоваться, просто прибавлять +2 тоже не вариант, потому что после 2 нужно делить на 3
Я хз как это делать, мой максимум это вот
Но там слишком много проверок