Сергей ЗимнуховУченик (74)
1 год назад
Хоп
package main
import (
"fmt"
"math/big"
)
func main() {
lastNum := 0
fmt.Scanln(&lastNum)
if lastNum < 3 {
fmt.Println("указанно неверное число")
}
hop := "хоп "
for i := 3; i <= lastNum; i += 5 {
if big.NewInt(int64(i)).ProbablyPrime(0) {
fmt.Print(hop)
} else {
fmt.Print(i, " ")
}
}
}
Ограничение времени 10 секунд
Ограничение памяти 64.0 Мб
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
В летнем математическом лагере дети бывают беспокойными после отбоя. Чтобы у них не осталось сил беспокоить вожатых и других детей поздним вечером, для них придумали игру, заодно помогающую выучить простые числа. Игру назвали «Хоп».
Правила: игроки становятся в круг, по очереди называют числа и приседают. Если число простое, вместо приседания говорит «хоп». Если игрок ошибся, например назвал другое число, или ошибся с «хоп»,— он немедленно проигрывает. Игра заканчивается на заранее оговоренном числе (например 100, 200, 500 или 1000). Проигравшие начинают с начала.
Партия в хоп для 2 игроков выглядит так:
1-й игрок: 1, хоп, хоп, хоп, 9, хоп, хоп, 15, хоп, хоп, 21, …
2-й игрок: хоп, 4, 6, 8, 10, 12, 14, 16, 18, 20, …
Машу с друзьями поймали вне палаты после отбоя, и заставили играть в игру. Всего получилось 5 игроков, Маша оказалась 3-й по кругу, она начинает с числа 3. Помогите Маше правильно назвать все числа.
Формат ввода
Последнее число, на котором заканчивается игра. Например: 20.
Формат вывода
Действия Маши через пробел. Для 20: «хоп, 8, хоп, 18».
Пример
Ввод Вывод
20
хоп 8 хоп 18
Примечания
Простое число: число, которое делится без остатка только на себя и на 1.
Как определять простые числа?
Самый простой способ: явно проверить, условие выше, перебрав все варианты.
Сравнительно эффективный алгоритм: решето Эратосфена. Вы берёте таблицу (например) с числами от 2 до 100, находите первое незачёркнутое число (2), и вычёркиваете все кратные ему: 4, 6, 8, 10, …, 100. Далее находите следующее незачёркнутое число (3), и вычёркиваете 6 (уже вычеркнуто), 9, 12, …, 99. 4 уже вычеркнуто. Далее 5… На 50 можно остановиться.
Таким образом на доске останутся незачёркнутыми только простые числа.
А особо продвинутые студенты могут найти решение в стандартной библиотеке Go.