Функции 1. Натуральное число называется простым, если оно

advertisement
Функции
1. Натуральное число называется простым, если оно делится только на 1 и на само себя. Написать функцию,
которая определяет, является ли ее параметр простым числом и возвращает логическое значение (при поиске делителей
нужно перебирать числа до минимально возможной границы; если делитель найден, функция должна немедленно
возвращать false). Далее, нужно воспользоваться этой функцией в функции main и распечатать все простые числа от
1 до 1000.
2. Натуральное число называется совершенным, если его делители, включая единицу (но не само число) в сумме
дают это число. Например, 6 — совершенное число, т. к. 6 = 1 + 2 + 3. Написать функцию, которая определяет,
является ли ее параметр совершенным числом. Функция должна возвращать логическое значение. Далее, нужно
воспользоваться этой функцией в функции main и распечатать все совершенные числа от 1 до 1000.
3. Пусть дано число n. Будем заменять его на число n/2, если n четно, и на 3n+1, если n нечетно. Существует гипотеза (не доказанная и не опровергнутая до сих пор), что с какого бы числа мы не начали, в результате цепочки таких
замен мы всегда можем прийти к числу 1. Ваша функция должна принимать n в качестве параметра и возвращать
число замен, приводящих к 1.
4. Написать функцию, вычисляющую функцию Эйлера ϕ(n). Eсли n раскладывается на простые множители как
n = pk11 pk22 . . . pkl l , то
1
1
1
· 1−
··· 1 −
ϕ(n) = n 1 −
p1
p2
pl
Примеры:
Input: 3 Output: 2
Input: 24 Output: 8
Input: 33 Output: 20
Замечание. Воспользоваться функцией, написанной в задаче 1.
5. Написать функцию, возвращающую НОД двух чисел (вычисленный по алгоритму Евклида).
6. Используя задачу 5, написать функцию, принимающую два целых параметра — числитель и знаменатель вводимого числа. Функция должна напечатать соответствующую несократимую дробь.
7. Используя задачу 5, написать функцию, проверяющую, являются ли данные три числа взаимно простыми.
8*. Драконова последовательность из нулей и единиц определяется следующим образом. Берется полоска бумаги,
складывается пополам несколько раз и разворачивается таким образом, чтобы 1) средний сгиб всегда был направлен
вниз и 2) последовательность сгибов при большем числе складываний начиналась с последовательности для меньшего
числа складываний. Теперь последовательность сгибов кодируется так: если сгиб направлен вниз, то он кодируется
нулем, вверх — единицей. В силу п. 2) последовательности для разного числа сгибов можно объединить в одну бесконечную последовательность. Написать функцию, по номеру сгиба выдающую его код (оказывается, способ получения
этой последовательности вместе с условиями 1) и 2) определяет эту последовательность однозначно). Пример: начало
этой последовательности выглядит так: 0 0 1 0 0 1 1 0 0 0 1 1 0 1 1 ...
9*. Изменить функцию задачи 4 так, чтобы она вычисляла также коэффициенты линейного разложения НОД (т.
е. если в качестве чисел заданы a и b и НОД(a,b)=c, то функция должна находить такие числа k и l, что ka+lb=c).
Эти числа нужно записывать в глобальные переменные с1 и с2.
10*. Пусть имеется три правила замены букв a → abcc, b → cbac, c → bcac. Мы строим строки из букв a, b, c
следующим образом: первая строка состоит из одной буквы a, а далее каждая следующая строка получается из
предыдущей при помощи замены каждой буквы по соответствующему правилу. Оказывается, что каждая следующая
строка начинается с предыдущей, и потому их можно объединить в одну бесконечную строку. Написать функцию, по
номеру позиции в этой строке выдающую букву, стоящую на этой позиции.
Related documents
Download