Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 20
1

Как работает программа определения простоты числа?

17.01.2015, 11:10. Показов 2442. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В учебнике Шилдта встретил программу, пишет простое число или нет, но не могу понять как здесь работает for.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int num;
boolean isPrime;
num = 9;//можно ввести любое число
if(num < 2) isPrime = false;//если 2 больше числа то выполняется самый нижний (else) (Я так понимаю)
else isPrime = true;//если 2 меньше идет цикл
for(int i=2; i <= num/i;i++) {Я так понимаю здесь 9 делит на 2, потом i++ потом делит на 3? и так до 9
 
if((num % i) == 0) { 
isPrime = false;
break;
}
}
if (isPrime) System.out.println("Простое");
else System.out.println("He простое");
Помогите пожалуйста разобраться. Не пойму куда девает результат когда 9 делит на 2, что выполняется после цикла for?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2015, 11:10
Ответы с готовыми решениями:

Используя процедуру определения простоты заданного натурального числа, найдите все простые числа, меньшие N
Используя процедуру определения простого числа заданного натурального числа, найдите все простые...

Исследовать эффективность двух алгоритмов определения простоты числа
дали задание: Цель: Следует выбрать эффективный алгоритм (по времени) теста простоты числа. На...

Функция определения простоты числа, оценка двух алгоритмов
Приветствую, очень нужна помощь. В общем даны 2 функции определения, одна с Break, вторая с Exit....

Программа на проверку простоты числа
Программа должна проверить простое число или нет. И вывести все простые числа от 2 до задоного...

12
2 / 2 / 2
Регистрация: 28.12.2014
Сообщений: 44
17.01.2015, 12:03 2
Лучший ответ Сообщение было отмечено sfisher как решение

Решение

Я так понимаю здесь 9 делит на 2, потом i++ потом делит на 3? и так до 9
Так до выполнения условия for:
i <= num/i;
т.е. до 2 <= 9/2, при i = 2
1
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
17.01.2015, 12:11 3
Лучший ответ Сообщение было отмечено sfisher как решение

Решение

sfisher, Лучше переписать на такое
Java
1
2
3
4
5
static boolean prime(int n) {
          for(int i=2;i*i<=n;i++) 
              if(n%i==0) return false; 
            return true;
      }
Это одно и тоже. Смысл в том, что если в промежутке от 2 до sqrt(n) есть делитель этого числа, то оно составное, иначе простое.
1
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 20
17.01.2015, 13:08  [ТС] 4
Что такое sqrt(n)? Почему вы его так называете? Можете объяснить подробно что за чем выполняется.
0
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
17.01.2015, 13:20 5
Лучший ответ Сообщение было отмечено sfisher как решение

Решение

В цикле от 2 до под корнем n проверяется, есть ли в этом интервале число, на которое n делится без остатка, если есть, то это число составное, иначе простое.
1
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 20
17.01.2015, 23:57  [ТС] 6
Всем большое спасибо за ответ!!!
0
173 / 131 / 74
Регистрация: 04.12.2013
Сообщений: 552
18.01.2015, 01:09 7
Sanan07, не правильно написали программу. Если я как аргумент передам 1, то выведет true. Но это не верно.
2
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
18.01.2015, 10:29 8
Prorok2323, да 1 не правильно,но остальные правильно. можно переделать так
Java
1
2
3
4
5
6
    static boolean prime(int n) {
        if(n<2) return false;
          for(int i=2;i*i<=n;i++) 
              if(n%i==0) return false; 
            return true;
      }
1
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 20
18.01.2015, 13:03  [ТС] 9
Sanan07,, Простите за мою тупость, не могли бы вы полностью написать где здесь должна быть строка System.out.println и где здесь указывать число, так как я недавно начал изучение Java и еще не понимаю некоторых вещей. Буду очень благодарен. Спасибо.
0
173 / 131 / 74
Регистрация: 04.12.2013
Сообщений: 552
18.01.2015, 14:34 10
sfisher, у вас есть main функция - точка входа программы.
Java
1
2
3
public static void main(String[] args) {
 
}
Она обязательно должна быть в каком-то классе. Например
Java
1
2
3
4
5
public class MyClass {
     public static void main(String[] args) {
 
     }
}
Вам написали функцию нахождения простого числа. Вы просто вставляете ее куда-нибудь в класс. Это логично, ведь функция не может существовать где-то за пределом программы.
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MyClass {
     public static void main(String[] args) {
 
     }
     static boolean prime(int n) {
        if(n<2) return false;
          for(int i=2;i*i<=n;i++) 
              if(n%i==0) return false; 
            return true;
      }
     
}
Теперь вам просто нужно вызвать функцию из main с каким-то аргументом.
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MyClass {
     public static void main(String[] args) {
           prime(73);
     }
     static boolean prime(int n) {
        if(n<2) return false;
          for(int i=2;i*i<=n;i++) 
              if(n%i==0) return false; 
            return true;
      }
     
}
На этом этапе вы вызвали функцию, но результат ее выполнения не видите. Соответственно, нужно его выписать. Сделаем это с помощью
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MyClass {
     public static void main(String[] args) {
           System.out.println(prime(73));
     }
     static boolean prime(int n) {
        if(n<2) return false;
          for(int i=2;i*i<=n;i++) 
              if(n%i==0) return false; 
            return true;
      }
     
}
1
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 20
19.01.2015, 14:53  [ТС] 11
Prorok2323, большое спасибо за ответ.

Добавлено через 21 час 19 минут
Prorok2323,, а как сделать так чтобы выводило вместо true false, простое число или нет, я пробую, у меня компилятор ошибку выдает.
0
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
19.01.2015, 16:02 12
sfisher,
Java
1
2
3
4
5
6
if(prime(25)) {
                System.out.println("Число - простое");
            }
            else {
                System.out.println("Число - составное");
            }
1
173 / 131 / 74
Регистрация: 04.12.2013
Сообщений: 552
19.01.2015, 16:16 13
sfisher,
Java
1
System.out.println(prime(25) ? "Простое" : "Составное");
1
19.01.2015, 16:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2015, 16:16
Помогаю со студенческими работами здесь

Не работает программа определения оптимального веса
тока начал изучать. написал малепусенькую програмку, а она матерится. говорит букву не ту вставляю...

Программа определения простого числа
Дополните программу выводом числа итераций. Дополните программу, чтобы при вводе числа 1...

Программа определения счастиливого числа в С++
Определить есть ли заданное шестизначное число счастиливым ( сумма первых трёх цифр должна быть...

Программа определения простого числа
//Программа определения простого числа #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru