Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2018, 13:39   #1
MoiLogin
 
Регистрация: 23.06.2018
Сообщений: 3
По умолчанию Нахождение простых чисел.

Задача: Написать программу, которая находила бы простые числа в диапазоне от 2 до 100.


Код:
class Prime {
  public static void main (String args[]){
    int i, j ;
    boolean isprime;
  
    for (i=2; i<100; i++) {
       isprime = true;
   
       // Проверить, делится ли число без остатка.
       for ( j = 2; j < i; j++)
           // Если число делится без остатка, оно простое
           if ((i%j) == 0) isprime = false;
 
       if(isprime)
           System.out.println (i + " is prime.");
     }
  }
}

Код работает, но не могу понять логику алгоритма. У меня на каждом прогоне цикла получаются одинаковые значения i, j. И соответственно остаток от деления в каждом случае равен 0. То есть isprime всегда false.
MoiLogin вне форума Ответить с цитированием
Старый 23.06.2018, 14:12   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от MoiLogin Посмотреть сообщение
И соответственно остаток от деления в каждом случае равен 0
Не понял, какой остаток от деления всегда равен 0. Напишите свои действия подробнее.
Black Fregat вне форума Ответить с цитированием
Старый 23.06.2018, 14:51   #3
MoiLogin
 
Регистрация: 23.06.2018
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Не понял, какой остаток от деления всегда равен 0. Напишите свои действия подробнее.
Остаток от деления по модулю. Код не мой. Пытаюсь разобрать, но видимо что-то упускаю.
MoiLogin вне форума Ответить с цитированием
Старый 24.06.2018, 11:17   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от MoiLogin Посмотреть сообщение
Код не мой.
С кодом особых проблем нет. Он, как Вы справедливо заметили, работает.
Проблема, видимо, в том, как Вы пытаетесь его разобрать. Вот я и пытаюсь понять, в чём же эта проблема. А Вы молчите, как партизан.

Вот Вы пишете
Цитата:
Сообщение от MoiLogin Посмотреть сообщение
И соответственно остаток от деления в каждом случае равен 0.
Я совершенно не понимаю, почему у Вас остаток от деления в каждом случае равен 0. Например, когда i равен 13, то при всех j от 2 до 12 включительно остаток никак не будет равен 0
Black Fregat вне форума Ответить с цитированием
Старый 25.06.2018, 00:21   #5
MoiLogin
 
Регистрация: 23.06.2018
Сообщений: 3
По умолчанию

В общем я разобрался. Все дело оказалось в моем незнании синтаксиса. Во втором цикле не увидев фигурных кавычек, открывающих тело цикла, я подумал что цикл только прогоняет j до значения i. А строка if ((i%j) == 0) isprime = false; сравнивает два одинаковых числа, думал я. Но я забыл что без фигурных кавычек, цикл исполнит следующую за ним строку до точки с запятой и все. И теперь все понятно.
Спасибо за помощь!
MoiLogin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение простых чисел массива - Pascal ABC pasterr Паскаль, Turbo Pascal, PascalABC.NET 2 06.03.2017 14:40
Нахождение простых чисел через решето Эратосфена (Си) forsazh12 Помощь студентам 3 13.03.2016 12:49
Программа для поиска простых, простых парных и взаимнопростых чисел in da fly Помощь студентам 1 26.05.2011 23:30
выбор из ряда чисел простых чисел изо Паскаль, Turbo Pascal, PascalABC.NET 5 13.04.2011 22:51
Нахождение простых чисел. Lunex.08 Общие вопросы C/C++ 7 10.04.2009 17:01