Как вы помните простое число — это такое число которое делится только на себя и на 1.
Никаких супер мега методик тут не будет. Я просто постараюсь на примере объяснить значение команды yield .
С начала напишем функцию, которая будет проверять простое это число или нет:
def isprime(n): if n == 1: return False for x in range(2, n): if n % x == 0: return False else: return True
Думаю тут затруднений быть не должно.. Функция просто проверяет в цикле все числа от 2 до проверяемого и если хотя-бы 1 делится без остатка возвращает лож.
Следующей будет самая «интересная» функция этой статьи:
def primes(n = 1): while(True): if isprime(n): yield n n += 1
Эта функция генерирует простые числа. Мы в бесконечном цикле (не бойтесь это не повлияет на ресурсы, на самом деле в бесконечность интерпретатор не залезет) проверяем каждое число от 1 и если оно простое заносим его в результат при помощи yield . Эта команда по сути является чем-то вроде функции добавления значений в результат. Тут это неплохо показано на примере.
Функция на JS, которая выводит простые числа!
Ну и теперь используем єто всё:
for n in primes(): if n > 100: break print(n)
Для каждого элемента (который мы назвали n) из числа который генерируется в primes(). И выводим все числа меньшие сотни.
Источник: blablacode.ru
Помогите вывести простые числа в java
Помогите составить программу в JAVA которая принимает целое число, выводит на экран все простые числа от нуля до принятого числа. Используя только простые операции if и for Я составил, но что-то не помогает import java.util.Scanner;
public class prostue_chisla < public static void main(String[] args) < System.out.println(«Введите положительное число: «); Scanner in = new Scanner(System.in); int input = in.nextInt(); boolean b = true; for (int P = 1; P System.out.println(P);> > > >
Отслеживать
задан 10 ноя 2017 в 19:34
59 1 1 золотой знак 2 2 серебряных знака 9 9 бронзовых знаков
Зачем вам переменная b ? Что конкретно в приведённом коде работает неправильно?
10 ноя 2017 в 19:45
Вот что оно выдает:Введите положительное число: 5 2 3 3 4 4 4 5 5 5 5
10 ноя 2017 в 20:44
7 ответов 7
Сортировка: Сброс на вариант по умолчанию
Если используете java 8+ , лучше юзать в вашем случае IntStream для целых чисел:
public static boolean isPrime(final int number) < return IntStream.rangeClosed(2, number / 2).anyMatch(i ->number % i == 0); >
System.out.println(isPrime(1)); // false System.out.println(isPrime(2)); // true
Отслеживать
ответ дан 23 мая 2018 в 6:28
4,075 4 4 золотых знака 13 13 серебряных знаков 29 29 бронзовых знаков
public static void main(String[] args) < Scanner scanner = new Scanner(System.in); int top = scanner.nextInt(); for (int i=2;i> public static boolean checkSimple(int i) < if (i<=1) return false; else if (i <=3) return true; else if (i%2==0 || i %3 ==0) return false; int n = 5; while (n*n <=i)< if (i % n ==0 || i % (n+2) == 0) return false; n=n+6; >return true; >
Алгоритм проверки на то, что число является простым взял отсюда : https://en.wikipedia.org/wiki/Primality_test
Задачи JS: Как найти простое число + Как найти все простые числа до N | Перебор и Решето Эратосфена
Отслеживать
ответ дан 10 ноя 2017 в 19:49
aleshka-batman aleshka-batman
2,868 10 10 серебряных знаков 21 21 бронзовый знак
Что-то все равно не выходит
10 ноя 2017 в 20:42
Проблема не со сканером, а с алгоритмом. Во-первых, он не оптимален, во-вторых, содержит ошибку. Но, если вы хотите искать простые числа именно таким способом, исправьте свой метод таким образом
public static void main(String[] args) < System.out.println(«Введите положительное число: «); Scanner in = new Scanner(System.in); int input = in.nextInt(); boolean b = true; for (int P = 2; P > if (b) System.out.println(P); else b = true; > >
Отслеживать
ответ дан 10 ноя 2017 в 20:32
10.2k 2 2 золотых знака 10 10 серебряных знаков 26 26 бронзовых знаков
Вот что выдает: Введите положительное число: 5 2 3 3 4 4 4 5 5 5 5
10 ноя 2017 в 20:46
может вы что-то неправильно скопировали, потому как у меня выдает 5 1 2 3 5
10 ноя 2017 в 20:48
1 — не простое.
10 ноя 2017 в 20:50
Спасибо, но все скопировал правильно
10 ноя 2017 в 20:52
меняем р=1 на р=2 и все хорошо, 1 не выводится
10 ноя 2017 в 20:52
//variable ‘input’ is input numeric for (int i = 2; i > if (rez != null) < System.out.println(rez); >>
Отслеживать
ответ дан 23 мая 2018 в 5:48
JavaJunior JavaJunior
1,527 6 6 серебряных знаков 15 15 бронзовых знаков
Программа проверяет, числа от 11 и до бесконечности, и выводит количество простых чисел на экран + все простые числа + время работы программы. При желании можно отключить массив и выводить только количество простых чисел, что ускорит время работы программы процентов на 30.
Без проблем можно запилить еще один метод, для проверки и вывода чисел до 10 и при помощи if проверять n
public class reshenie < public static void main(String[] args) < int count = 4;//начинаем с 4, т.к. до 10 нам известны все простые числа и программа их не обрабатывает. int n = 100000;//число до которого необходимо найти все простые числа ArrayListnumbers = new ArrayList<>();//создаем массив, необходим для вывода чисел на экран, можно и без массива, просто выводить каждое найденное простое число numbers.add(2);//добавляем в массив простые числа до 10(см count = 4) numbers.add(3); numbers.add(5); numbers.add(7); Date startTime = new Date();//время старта for (int i = 11; i > Date finishTime = new Date();//время окончания работы алгоритма long ct = finishTime.getTime() — startTime.getTime();//время работы System.out.println(«Время вычислений: » + ct + «ms»);//вывод на экран времени работы System.out.println(«Количество простых чисел: » + count);//вывод количества System.out.print(numbers);//вывод всех чисел > static boolean simple(int a) else < for (int j = 3; j > > if (p > 0) else return true; > >
Источник: ru.stackoverflow.com
Простые числа [ Python 3 ]
Формат входных данных
На вход программе подаются два числа, каждое на отдельной строке.
Формат выходных данных
Программа должна вывести все простые числа от a до b включительно, каждое на отдельной строке.
Примечание. Число 1 простым не является.
n1, n2 = int(input()), int(input()) sum_ = 0 # сумма делителей натурального числа for i in range(n1, n2 + 1): for ii in range(1, i + 1): if i % ii == 0: # если натеральное число делится на очередной делитель без остатка: sum_ = sum_ + ii # увеличиваем сумму делителей на очередной делитель if sum_ == i + 1: print(i) sum_ = 0
Источник: technogeeks.ru