from tkinter import *
from tkinter import messagebox
def soma_divisores(numero):
soma = 0
for i in range(1, numero):
if numero % i == 0:
soma += i
return soma
def verificar_amigos():
try:
num1 = int(primeiro_numero.get())
num2 = int(segundo_numero.get())
if num1 <= 0 or num2 <= 0:
resultado_texto.config(text="Digite apenas números inteiros positivos.")
return
soma1 = soma_divisores(num1)
soma2 = soma_divisores(num2)
if soma1 == num2 and soma2 == num1:
mensagem = f"{num1} e {num2} são NÚMEROS AMIGOS!"
else:
mensagem = f"{num1} e {num2} NÃO são números amigos."
resultado_texto.config(text=mensagem)
except ValueError:
resultado_texto.config(text="Por favor, insira valores numéricos válidos.")
def encontrar_ate_limite():
try:
limite = int(limite_num.get())
if limite <= 0:
messagebox.showerror("Erro", "Digite um número positivo.")
return
resultado_lista.delete(0, END)
encontrados = []
for num in range(2, limite):
parceiro = soma_divisores(num)
if parceiro > num and soma_divisores(parceiro) == num:
encontrados.append((num, parceiro))
resultado_lista.insert(END, f"{num} e {parceiro}")
if not encontrados:
resultado_lista.insert(END, "Nenhum número amigo encontrado até este limite.")
except ValueError:
messagebox.showerror("Erro", "Digite um número inteiro válido.")
def limpar():
primeiro_numero_entrada.delete(0, END)
segundo_numero_entrada.delete(0, END)
limite_num_entrada.delete(0, END)
resultado_texto.config(text="")
resultado_lista.delete(0, END)
root = Tk()
root.geometry("800x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Verificador de Números Amigos")
# Título
titulo = Label(
text="Verificador de Números Amigos",
font=("Arial", 27, "bold"),
bg="#103030",
fg="#49e3e3"
)
titulo.place(relx=0.05, rely=0.02)
# Labels para entrada de dois números
Label(text="Primeiro número:", font=("Arial", 20, "bold"), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.12)
Label(text="Segundo número:", font=("Arial", 20, "bold"), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.20)
primeiro_numero = StringVar()
primeiro_numero_entrada = Entry(textvariable=primeiro_numero, font=("Arial", 12, "bold"), bg="white", fg="blue", justify='center')
primeiro_numero_entrada.place(relx=0.5, rely=0.125, relwidth=0.4)
primeiro_numero_entrada.focus()
segundo_numero = StringVar()
segundo_numero_entrada = Entry(textvariable=segundo_numero, font=("Arial", 12, "bold"), bg="white", fg="blue", justify='center')
segundo_numero_entrada.place(relx=0.5, rely=0.21, relwidth=0.4)
Button(text="Verificar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=verificar_amigos).place(relx=0.05, rely=0.30, relwidth=0.4, relheight=0.08)
resultado_texto = Label(text="", font=("Arial", 14, "bold"), bg="#103030", fg="#49e3e3", wraplength=700, justify="center")
resultado_texto.place(relx=0.05, rely=0.40, relwidth=0.9, relheight=0.08)
Label(text="Encontrar números amigos até:", font=("Arial", 20, "bold"), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.52)
limite_num = StringVar()
limite_num_entrada = Entry(textvariable=limite_num, font=("Arial", 12, "bold"), bg="white", fg="blue", justify='center')
limite_num_entrada.place(relx=0.55, rely=0.525, relwidth=0.35)
Button(text="Encontrar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=encontrar_ate_limite).place(relx=0.05, rely=0.60, relwidth=0.4, relheight=0.08)
resultado_lista = Listbox(bg="white", fg="blue", font=("Arial", 12, "bold"))
resultado_lista.place(relx=0.05, rely=0.70, relwidth=0.9, relheight=0.20)
Button(text="Limpar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=limpar).place(relx=0.05, rely=0.92, relwidth=0.4, relheight=0.06)
Button(text="Sair", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=root.destroy).place(relx=0.55, rely=0.92, relwidth=0.4, relheight=0.06)
root.mainloop()