File size: 1,630 Bytes
7990ab1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import gradio as gr
import sympy
from graphviz import Digraph

# Asal çarpanları bulan fonksiyon
def asal_carpanlar(sayi):
    return sympy.factorint(sayi)

# Çarpan ağacını oluşturmak için rekürsif fonksiyon
def carpan_agaci(sayi):
    factors = sympy.factorint(sayi)
    if len(factors) == 1 and list(factors.values())[0] == 1:
        return str(sayi)
    else:
        factor = list(factors.keys())[0]
        return [sayi, carpan_agaci(factor), carpan_agaci(sayi // factor)]

# Ağacı grafiksel olarak oluşturan fonksiyon
def ciz_agac(agac, graph=None):
    if graph is None:
        graph = Digraph()
    if isinstance(agac, list):
        parent = str(agac[0])
        left, right = agac[1], agac[2]
        for child in [left, right]:
            child_label = str(child[0]) if isinstance(child, list) else str(child)
            graph.edge(parent, child_label)
            if isinstance(child, list):
                ciz_agac(child, graph)
    return graph

# Gradio arayüzü fonksiyonu
def asal_carpan_gorseli(sayi):
    agac = carpan_agaci(int(sayi))
    graph = ciz_agac(agac)
    graph.render("asal_carpan_agaci", format="png")
    return "asal_carpan_agaci.png"

# Gradio arayüz tasarımı
with gr.Blocks() as demo:
    gr.Markdown("### 🔢 Asal Çarpan Ağacı Hesaplama")

    with gr.Row():
        sayi = gr.Number(label="Bir sayı girin", minimum=2, value=48)
    
    btn = gr.Button("Asal Çarpan Ağacını Oluştur 🌳")
    
    output_img = gr.Image(label="Asal Çarpan Ağacı Görseli", type="filepath")

    btn.click(asal_carpan_gorseli, inputs=sayi, outputs=output_img)

demo.launch()