Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача на Go

Сергей Зимнухов Ученик (64), на голосовании 10 месяцев назад
Хоп
Ограничение времени 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.
Голосование за лучший ответ
Mister Cider Мудрец (17843) 11 месяцев назад
Хоп мусорок, не шей мне срок
Сергей ЗимнуховУченик (64) 11 месяцев назад
Не смешно, мне надо решение срочно
Федор Колесин Ученик (102) 11 месяцев назад
Если узнаешь напиши мне тоже
Сергей ЗимнуховУченик (64) 11 месяцев назад
Хоп
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, " ")
}
}

}
Федор Колесин Ученик (102) Сергей Зимнухов, огромное спасибо
Похожие вопросы