Tümevarım Mod işlemini ters çevirme

Acaba denklemler farklı o yüzden mi böyle sonuç veriyor diye denedim ama denklem aynı kalsa bile yine aynı hatayı veriyor

import tinyec.ec as ec
field = ec.SubGroup(17, (15, 13), 100, 1)
curve = ec.Curve(0, 7, field)
tinyec/ec.py:115: UserWarning: Point (15, 13) is not on curve "undefined" => y^2 = x^3 + 7 (mod 17)
warnings.warn("Point (%d, %d) is not on curve %s" % (self.x, self.y, self.curve))
# Warning is generated because the generator point does not belong to the curve

for x in range(0,17):
    for y in range(0,17):
        p1 = ec.Point(curve, X, y)
        if p1.on_curve:
            print(x,y)

for x in range(0,17):
    for y in range(0,17):
        p2 = ec.Point(curve, X, y)
        if p1.on_curve:
            print(x,y)

print(p1 + p2)
(6, 6) off "undefined" => y^2 = x^3 + 7 (mod 17)

bu şekilde düzeltmeye çalıştım

Yani güya aramaya çalıştığım değer x=6 ve y=6 noktası

Normal değil mi? Zaten yukarıdaki satırlar bunu yönetmiyor mu?

abi bunu biraz daha açsan

yani hatayı almam normalse hata almamak için nerede değişiklik yapmam gerekiyor

Hata almıyorsun, for lar ile olası tüm x ve y değerlerini veriyorsun.

Bu değerlerden eğri üzerinde olmayanlar doğal olarak uyarı olarak gösteriliyor. False olanlar.

Bunu da tinyec kendi oluşturuyor uyarı olarak. Uyarılar hata değildir. Burada True olanlar aradığın x,y ikilileri,

True olan ikilileri alman yeterli.

Abi True’ları bir türlü alamadım
(6,6) değerini ben kendim elle girdim ve çıktı olarak 6 değerini vermesini istiyorduk çünkü
mod 17
n=100
gx = 15
gy = 13

için 6. değerin x ve y noktaları (6,6) çıkıyor

ama sonuç 6 alamadık
demekki bir yerde hata yaptım ama nerede onu bulamadım

p1 ve p2 yi ayrı ayrı yazıp, toplamadan çıktı ekranını paylaşır mısın?

Bunlar niçin kodun içinde?

Oradaki metni aynen yapıştırmayalım.

Python kodu taslağın yazmıştım yukarıda, onu kullanırmısın.

forlar ve sadece on_curve kontrolü yapacaksın.

Açıklama amaçlı satırları kod içinde kullanmışsın.

Aldığın hata da, altta yazıyor. syntax error diye.

Azimliyim kodu ben yazmayacağım, kendin okuyup anlayıp çözeceksin sonunda.

İnanıyorum sana.

bir de lazımsa p1 değerini print et hepsi bu.

Abi ben onları kodun parçası sandım :grinning:

peki abi burada mesela ben sadece (6,11) noktasının kaçıncı sırada olduğu istesem ne yapmalıyım

print in yanına a=a+1 gibi bir sayaç koy, printle beraber onu da yazdır.

p =1
 x = 15
 y = 13 

p =2
 x = 2
 y = 10 

p=3
 x = 8
 y = 3 

p=4
 x = 12
 y = 1 

p=5
 x = 6
 y = 6 

p=6
 x = 5
 y = 8 

p=7
 x = 10
 y = 15 

gibi

[/quote]

abi benim demek istediğim hepsini yazdırmasın sadece atıyorum örneğin
ben x=8 ve y=3 yazayım oda bunun p=3 değerine tekabül ettiğini yazdırsın

for döngüsü kullanma, değerleri ver, o da doğrudan doğrudan true false döndürsün.

abi öyle yapınca p yi alamadım

neden?

x= 6 y=11

print p1…

ama halbuki x=2 ve y=10 değeri p=2 ise olabilir