Задать вопрос
PRAIT
@PRAIT

С помощью цикла вывести на экран все простые числа от 1 до 100 как почему выходит true?

Всем привет, есть задача, нужно с помощью циклов вывести на экран все простые числа от 1 до 100. Простое число - число которое делится нацело только на единицу или само на себя.
Вот код:

import java.util.Scanner;

public class Test {

  public static void main(String[] args) {
    try (Scanner tru = new Scanner(System.in)) {
      int number;
      System.out.println("Enter number");

      for (int i = 2; i <= 100; i++) {
        System.out.println(i % 1 == 0 || i % i == 0);
      }
    }
  }
}


Ребята, почему при выполнении программа выдаёт просто
true
true
true
true
true...
Нужно как то перевести в число или программа неправильно реализована? Спасибо!
  • Вопрос задан
  • 11055 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
samodum
@samodum
Какой вопрос - такой и ответ
Программа неверная.

Сделай ещё один цикл внутри этого, главного.
for (int i = 2; i <= 100; i++) {
bool isPrime = i > 2;
for (int j = 2; j < i; j++) {
        if(i % j == 0){ isPrime = false;
break;}
      }
if(isPrime)
        System.out.println(i);
      }


Код неоптимальный, О(n^2), но тебе сойдёт
Ответ написан
@terminator-light
for(int i = 2; i < 100; ++i){
	int count = 0;
	for(int j = 2; j <=i && count < 2;++j){
		if(i%j==0){
			++count;
		}
	}
	if(count<2)
	   System.out.println(i);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Программа неправильно реализована. Вы выводите не число, а результат проверки является ли число простым.
Перепишите с использованием if.
Ответ написан
@Cheypnow
В System.out.println(i % 1 == 0 || i % i == 0); выводится результат проверки, а не само число.
А нужно выводить результат если проверка успешна:
if (i % 1 == 0 || i % i == 0) {
    System.out.println(i);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы