Напишите программу по информатике на питоне - Компьютерные вопросы

Вопрос Напишите программу по информатике на питоне

Регистрация
12 Ноя 2012
Сообщения
83
Репутация
1
Спасибо
1
Монет
0
Напишите программу, которая вводит натуральное число N и находит все тройки натуральных чисел (а, b, с), для которых выполняется равенство N = а^2+b^2+с^2. Учтите, что таких троек может не быть.
306896126_b27369d6db9a8089f92ab29773c38fd7_800.jpg

 
Регистрация
6 Авг 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
В отличии от двух идиотских ответов у Лёхи Миронова программа работает корректно, только при больших N слишком медленно. Если нужны N порядка миллионов, а то и миллиардов, то лучше так: from math import isqrt
N = int(input('N: ')); n, k = isqrt(N) + 1, 0
for a in range(1, n):
A = a**2
for b in range(a, n):
B = A + b**2
if B >= N: break
C = N - B; c = isqrt(C)
if c < b: break
if c**2 == C: k += 1; print('%d)' % k, a, b, c) Только так выводятся тройки, упорядоченные по возрастанию. Но вроде ещё можно ускорить.
 
Регистрация
5 Авг 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
from tkinter import *
import random
from tkinter import messagebox
def no():
messagebox.showinfo(&#34; &#34;, &#34;Cпасибо! Ваш голос учтён!&#34;)
quit()
def motionMouse(event):
btn.place(x=random.randint(0, w - btn.winfo_reqwidth()), y=random.randint(0, h))
def pressMouse(event):
quit(0)
root = Tk()
root.attributes(&#39;-fullscreen&#39;, True)
root.resizable(False, False)
root.configure(bg=&#34;#000000&#34;)
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
lab = Label(text=&#34;Хотите ли вы увеличение зарплаты?&#34;, font=&#34;Arial 20&#34;).place(x=500, y=300)
btn1 = Button(text=&#34;Нет&#34;, font=&#34;Arial 20&#34;, command=no).place(x=600, y=432)
btn = Button(text=&#34;Да&#34;, font=&#34;Arial 20&#34;)
btn.place(x=w // 2 - btn.winfo_reqwidth() // 2, y=h // 2)
btn.bind(&#34;&lt;Enter&gt;&#34;, motionMouse)
root.mainloop()
 
Регистрация
23 Ноя 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
def find_triplets(N):
triplets = []
for a in range(1, int(N**(1/2))+1):
for b in range(a, int(N**(1/2))+1):
for c in range(b, int(N**(1/2))+1):
if a*a + b*b + c*c == N:
triplets.append((a, b, c))
return triplets

N = int(input())
triplets = find_triplets(N)

if triplets:
print("Найденные тройки чисел:")
for triplet in triplets:
print(triplet)
else:
print("Троек чисел, удовлетворяющих условию, не найдено.")
 
Регистрация
24 Дек 2013
Сообщения
82
Репутация
-1
Спасибо
0
Монет
0
def find_triples(N):
triples = []
for a in range(1, N + 1):
for b in range(1, N + 1):
for c in range(1, N + 1):
if a**2 + b**2 + c**2 == N:
triples.append((a, b, c))
return triples

def main():
try:
N = int(input(&#34;Введите натуральное число N: &#34;))
if N &lt;= 0:
print(&#34;Введите положительное натуральное число.&#34;)
else:
result = find_triples(N)
if result:
print(f&#34;Тройки чисел, удовлетворяющие условию: {result}&#34;)
else:
print(&#34;Троек не найдено.&#34;)
except ValueError:
print(&#34;Введите корректное число.&#34;)

if __name__ == &#34;__main__&#34;:
main()
 
Сверху Снизу