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

Задача на Go

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

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