Помогите решить на Питоне задачи, пожалуйста, в интернете все решения неправильные!!! Даю 34 балла.
1) Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае.
Операцией возведения в степень пользоваться нельзя!
2)Дано натуральное число n>1. Выведите его наименьший делитель, отличный от 1.
Решение оформите в виде функции MinDivisor(n). Алгоритм должен иметь сложность O(корень из n) .
Указание. Если у числа n нет делителя не превосходящего корень из n , то число n — простое и ответом будет само число n.
3) Последовательность Фибоначчи это последовательность типа Xn = Xn – 1 + Xn – 2 , n > 2, n - номер числа в последовательности.
Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что
Xn=A.
Если А не является числом Фибоначчи, выведите число -1.
4) Последовательность состоит из натуральных чисел и завершается числом 0. Определите значение второго по величине элемента в этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить наибольший элемент.
Входные данные
Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).
Выходные данные
Выведите ответ на задачу.
Answers & Comments
N=int(input())
s=2
flag=False
for i in range(N):
if N=s:
flag=True
break
else:
s*=2
if flag:
print('Yes')
else:
print('No')
2.
n=int(input())
def MinDivisor(n):
nod=-1
for i in range(n-1):
if n%i=0:
return i
break
if MinDivision(n)==-1:
print(n,' число является простым.')
else:
print(MinDivision(n))
3.
A=int(input())
x=x1=1
s=0
while x1<A+2:
b=x
x=x1
x1+=b
s+=1
if x1==A:
print(s)
else:
print(-1)
4.
a=[]
while 1:
s=int(input())
if s==0:
break
a.append(s)
a.sort()
print(a[-2])