• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Brak wyniku kompilacji

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
54 wizyt
pytanie zadane 26 czerwca 2020 w Python przez BezBarwny Użytkownik (700 p.)

hej próbuje ogarnąć działanie sita i przepisałem je dokładnie jeden do jednego z książki ale z jakiegoś powoodu mimo że się kompiluje nie wyświetla się żaden wynik przykłady liczb biore takze z ksiazki wiec nie ma opcji ze sito nie policzyło problemu lub coś takiego wiec nie wiem czy to wina nowej wersji pythona czy jaka jest przyczyna ale może ktoś będzie mógł pomóc 

n = 1042387
import math
#n=100451
A=500
x0=isqrt(n)
x1=range(x0+1,x0+A+1)
pocz=x1[0]
kon=x1[-1]
x00=[0 for k in x1]
P=50
pr=[r for r in prime_range(2,P) if kronecker_symbol(n,r)==1]
kk=len(pr)
x2=matrix(ZZ,A,kk)
xxx=[x^2-n for x in x1]
bety=[]
pierw=[]
for pn in range(kk):
    beta=0
    zawiera=True
    while zawiera:
        beta=beta+1
        rr0=Mod(n,pr[pn]^beta).sqrt(all=True)
        rr=[Integer(x) for x in rr0]
        indpocz=pocz//(pr[pn]^beta)
        indpocz1=indpocz+1
        poczatek=indpocz*(pr[pn])^beta
        poczatek1=indpocz1*(pr[pn])^beta
        r0=poczatek+Integer(min(rr))
        r1=poczatek+Integer(max(rr))
        r2=poczatek+Integer(min(rr))
        r3=poczatek+Integer(max(rr))
        zawiera0=(pocz<=r0 and r0<=kon)
        zawiera1=(pocz<=r1 and r1<=kon)
        zawiera2=(pocz<=r2 and r2<=kon)
        zawiera3=(pocz<=r3 and r3<=kon)
        if zawiera0:
            pierw.append([pr[pn],beta,r0])
            for m in range (r0,kon+1,pr[pn]^beta):
                x2[m-pocz,pn]=beta
                xxx[m-pocz]=xxx[m-pocz]/pr[pn]
        elif zawiera2:
            pierw.append([pr[pn],beta,r2])
            for m in range(r22,kon+1,pr[pn]^beta):
                x2[m-pocz,pn]=beta
                xxx[m-pocz]=xxx[m-pocz]/pr[pn]
        if zawiera1:
            pierw.append([pr[pn],beta,r1])
            for m in range(r1,kon+1,pr[pn]^beta):
                x2[m-pocz,pn]=beta
                xxx[m-pocz]=xxx[m-pocz]/pr[pn]
        elif zawiera3:
            pierw.append([pr[pn],beta,r3])
            for m in range(r3,kon+1,pr[pn]^beta):
                x2[m-pocz,pn]=beta
                xxx[m-pocz]=xxx[m-pocz]/pr[pn]
        zawiera=zawiera0 or zawiera1 or zawiera2 or zawiera3
    bety.append([pr[pn],beta-1])
if x1[0]%2==0:
    xp=1
else:
    xp=0
for k in range (xp,A,2):
    x00[k]=1
    xxx[k]=xxx[k]/2
a0=matrix(ZZ,[x00]).transpose()
aa = a0.augment(x2)
pr.insert(0,2)
mat1=matrix(Integers(2), [aa[k] for k in range(A) if xxx[k]==1])
lx1=mat1.nrows()
kkk=kernel(mat1)
nk=kkk.ngens()
for l in range(nk):
    czynn=[x1[k] for k in range(lx1) if (kkk.gen(l)) [k]>0]
    x=prod(czynn)%n
    y=Integer(mod(x^2,n).sqrt())
    g1=gcd(x+y,n)
    g2=gcd(x-y,n)
    if min(g1,g2)>1:
        print [g1,g2]
        break

 

1 odpowiedź

0 głosów
odpowiedź 26 czerwca 2020 przez adrian17 Ekspert (330,920 p.)
edycja 26 czerwca 2020 przez adrian17

mimo że się kompiluje

skąd wiesz?

(Ogólnie w Pythonie zazwyczaj rzadko się mówi o kompilowaniu...)

Na oko, zakładając że wrzuciłeś cały skrypt, to to nie ma prawa działać. Brakuje definicji/importów rzeczy jak isqrt, prime_range, kronecker_symbol... Integer?

To ma być sito eratostenesa? Bo to jest tak z 5x więcej kodu niż normalnie by było potrzebne na sito w Pythonie. Czy jakieś inne sito masz na myśli? (ogólnie mało konkretów napisałeś... jakie sito, jaka książka)

komentarz 27 czerwca 2020 przez BezBarwny Użytkownik (700 p.)
sito według koblitza z książki Algorytmy teorii liczb i kryptografii w przykładach autora Andrzej Chrzęszczyk
komentarz 27 czerwca 2020 przez adrian17 Ekspert (330,920 p.)
Oh, wygląda że to używa... SageMath? Tak szczerze to nigdy o tym wcześniej nie słyszałem. Proponuję to dodać do treści pytania w przyszłości.

W każdym razie niestety nie jestem w stanie pomóc.

Podobne pytania

0 głosów
0 odpowiedzi 614 wizyt
0 głosów
2 odpowiedzi 91 wizyt
pytanie zadane 26 października 2016 w C i C++ przez neWWbie Początkujący (410 p.)
0 głosów
1 odpowiedź 318 wizyt

90,871 zapytań

139,544 odpowiedzi

313,818 komentarzy

60,356 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...