Advertisement
bmtd

Fermat

Apr 9th, 2017
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.53 KB | None | 0 0
  1. enc = 19680371928191389865779839985791596167665873169713320020521150351814544808795290799819143739285034284618916611967016738463398067633445648709977850622867289722372596963247707263439220754822048132943713516661678425983400991090507601151379737471045664186065701334581916822015055797618213572309286829285344833292619972478164124966
  2. e = 968652731
  3. n = 102540217756563657047332566955337115791446221732625727452582331508051620795222012389711690721710744258138643196665107838857343318370676047259451056400766716545743614936642796054577351416225937660442147520898979450408123775720780029305387983864387834538862252970711456364395296680415434192049384435099401099371935534988486952679
  4.  
  5. def fermat(n,k):
  6.     bits=(len(bin(n))-2)
  7.     bits=bits//2+bits%2
  8.  
  9.     l=bits-k
  10.  
  11.     #4 value of a is narrowwed down to a1, a2
  12.     a1=2^(k-2)+2^(l-2)-10^4
  13.     a2=-2^(k-2)+2^(l-2)-10^4
  14.    
  15.     while 1:
  16.         if is_square(a1^2+n):
  17.             print sqrt(n+a1^2)+a1
  18.             break
  19.         if is_square(a2^2+n):
  20.             print sqrt(n+a2^2)+a2
  21.             break
  22.         a1+=1
  23.         a2+=1
  24.  
  25. class Timeout():
  26.     """Timeout class using ALARM signal."""
  27.     class Timeout(Exception):
  28.         pass
  29.  
  30.     def __init__(self, sec):
  31.         self.sec = sec
  32.  
  33.     def __enter__(self):
  34.         signal.signal(signal.SIGALRM, self.raise_timeout)
  35.         signal.alarm(self.sec)
  36.  
  37.     def __exit__(self, *args):
  38.         signal.alarm(0)    # disable alarm
  39.  
  40.     def raise_timeout(self, *args):
  41.         raise Timeout.Timeout()
  42.  
  43.  
  44. for i in range(256,1,-1):
  45.     try:
  46.         with Timeout(3):
  47.             fermat(n,i)
  48.     except:
  49.         pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement