Anda di halaman 1dari 18

Jupyter NotebookUntitled Last Checkpoint: 3 hours ago (autosaved)

SageMath 7.4
File
Edit
View
Insert
Cell
Kernel
Widgets
Help
CellToolbar
In [3]:

# 1.1 Pythaogrean triples


a = 2
b = 3
c = 4
print (a^2)+(b^2) == (c^2)
False
In [11]:

# 1.2 Solve Equestions using sage


?
var('a,b,c') #must define all the values you are using first
eqn = [a+b*c==1, b-a*c==0, a+b==5] #write down all the equations
s = solve(eqn, a,b,c); #first type the name of equation followed by the name of
values you want to get for example a,b,c
print s
?
#example for solving pythagorean triple equestion from slide one
var('x,m')
eqns = [(x^2)+(m^2)*((x+1)^2)==1]
solve(eqns,x)
[
[a == (25*I*sqrt(79) + 25)/(6*I*sqrt(79) - 34), b == (5*I*sqrt(79) + 5)/(I*sqrt(79)
+ 11), c == 1/10*I*sqrt(79) + 1/10],
[a == (25*I*sqrt(79) - 25)/(6*I*sqrt(79) + 34), b == (5*I*sqrt(79) - 5)/(I*sqrt(79)
- 11), c == -1/10*I*sqrt(79) + 1/10]
]
Out[11]:
[x == -1, x == -(m^2 - 1)/(m^2 + 1)]
In [23]:

ry GCD Algorithm
# 1.3 Binary GCD Algorithm
def gcd(u, v):
""" This function will calcluate
GCD of given two numbers.
If the input is negative, both the
numbers are converted to positive
before the calculation
"""
if u == v:
return u
elif u == 0:
return v
elif v == 0:
return u
# u is even
elif u & 1 == 0:
# v is even
print 'v is even'
if v & 1 == 0:
print 'u is even as well'
return 2*gcd(u >> 1, v >> 1)
# v is odd
else:
return gcd(u >> 1, v)
# u is odd
elif u & 1 != 0:
# v is even
if v & 1 == 0:
return gcd(u, v >> 1)
# v is odd and u is greater than v
elif u > v and v & 1 != 0:
return gcd((u-v) >> 1, v)
# v is odd and u is smaller than v
else:
return gcd((v-u) >> 1, u)

gcd(87654321,12345678)
?
#use this when solving the binary gcd
?
u = 87654321
v = 6172839
z = (u-v)/2
?
print z
?
v is even
v is even
v is even
v is even
v is even
v is even
v is even
v is even
40740741
In [26]:

#1.4 How is check if a number is even or odd


a = 6172839
e = is_even(a)
o = is_odd(a)
print 'the number is ',a,'Is even?',e , ' Is Odd?',o
the number is 6172839 Is even? False Is Odd? True
In [439]:

Extended Eculidean ALgorithm


#1.5 Extended Eculidean ALgorithm
#LEAVE THIS AS IT IS USE THE NEXT METHOD TO WORK ON YOUR VALUES USE THIS AS AN
EXAMPLE TO UNDERSTAND THE CODE
def egcd(a, b):
x,y, u,v = 0,1, 1,0
while a != 0:
q, r = b//a, b%a
print q,r
m, n = x-u*q, y-v*q
print m,n
b,a, x,y, u,v = a,r, u,v, m,n
print b,a,x,y,u,v
gcd = b
return gcd, x, y
?
print egcd(1398, 324)
?
#how to decode the output in order to write it on paper for both euclidean and
extended euclidean algo
#Euclidean Algo: start from line 3 of output
# 1348 = 4x324+102
#look at line with 324 in it
# 324 = 3x102 + 18
# Follow the pattern
# 102 = 15x8 + 12
# 18 = 1x12 + 6
# 12 = 2*16 + 0
# 6 is your GCD
?
######################
#extended Euclidean algo
# look at line next to 324 for this
# 102 = 1348-4*325
# this means that
# 102 = a-4*b
# lets move to step 2
# 18 = 324-3*102
# but now we know the value of 102 and we know that 324 is our b so
# 18 = b-3*(a-4*b)
# the final solution is in 3rd line below the one with 324 102 0 1 1 -4
# it says -3 13
# so the answer we are looking for is
# 18 = -3a+13b
# repeat this till you get the answer you are looking for.
?
print '=================================================='
?
?
?
def egcd(a, b):
x,y, u,v = 0,1, 1,0
while a != 0:
q, r = b//a, b%a
print q,r
m, n = x-u*q, y-v*q
print m,n
b,a, x,y, u,v = a,r, u,v, m,n
print b,a,x,y,u,v
gcd = b
return gcd, x, y
?
print egcd(10, 6)
0 324
0 1
1398 324 1 0 0 1
4 102
1 -4
324 102 0 1 1 -4
3 18
-3 13
102 18 1 -4 -3 13
5 12
16 -69
18 12 -3 13 16 -69
1 6
-19 82
12 6 16 -69 -19 82
2 0
54 -233
6 0 -19 82 54 -233
(6, -19, 82)
==================================================
0 6
0 1
10 6 1 0 0 1
1 4
1 -1
6 4 0 1 1 -1
1 2
-1 2
4 2 1 -1 -1 2
2 0
3 -5
2 0 -1 2 3 -5
(2, -1, 2)
In [442]:

6
# 2.1 FIND PRIME FACTORS OF A NUMBER
factor(50)
(8*6)%10
Out[442]:
8
In [53]:

# 2.2 SQUARE ROOT (sqrt)


sqrt(200).n()
Out[53]:
14.1421356237310
In [7]:

# 2.3 Check divisibility


21%12 #this means 13 divides 200 and leaves 5 as reminder
?
Out[7]:
9
In [5]:

# 2.4 Sieve of Eratosthenes


eratosthenes(200)
Out[5]:
[2,
3,
5,
7,
11,
13,
17,
19,
23,
29,
31,
37,
41,
43,
47,
53,
59,
61,
67,
71,
73,
79,
83,
89,
97,
101,
103,
107,
109,
113,
127,
131,
137,
139,
149,
151,
157,
163,
167,
173,
179,
181,
191,
193,
197,
199]
In [64]:

# 2.5 Solving LINEAR CONGRUENCES


# DO NOT CHANGE THE VALUES COPY AND USE A NEW ONE
# Eg. Solve x^2+3x+5 = 4 mod 11
# Answer starts from 0 and goes till 9 so valid answer is 2 and 6
?
[mod((x^2)+3*x+5,11)==4 for x in range(10)]
Out[64]:
[False, False, True, False, False, False, True, False, False, False]
In [30]:

# 3.1 Eurlers pi Calculator


factor(2008)
euler_phi(2000)
?
Out[30]:
800
In [36]:

# 3.2 Chinese Reminder Theorem


# Solve the first equation for k
# x=1mod3
?
var('k')
z = solve_mod(35*k==1,3)
gcd()
CRT_list([2,3,2], [3,5,7])
?
gcd(7,4)
print z
final = (2*35*2)+(3*21*1)+(2*15*1)
2059%364
?
5*3
gcd(35,3)
xgcd(6,10)
print final%105
[(2,)]
23
In [121]:

#4.1 How to calculate number of primes till given x.


pix = 100
pix/(ln(pix).n())
?
factor(989)
Out[121]:
23 * 43
In [2]:

#4.2 Use me for succesive squering


?
main = 5
power = 842
modit = 613
k = 1
m = (main^k)%modit
print main,'^',k,'=', m,' mod ',modit
?
for i in range(10):
z = k*2
n = (main^z)%modit
k = z
print main,'^',z,'=', n,' mod ',modit

5 ^ 1 = 5 mod 613
5 ^ 2 = 25 mod 613
5 ^ 4 = 12 mod 613
5 ^ 8 = 144 mod 613
5 ^ 16 = 507 mod 613
5 ^ 32 = 202 mod 613
5 ^ 64 = 346 mod 613
5 ^ 128 = 181 mod 613
5 ^ 256 = 272 mod 613
5 ^ 512 = 424 mod 613
5 ^ 1024 = 167 mod 613
In [90]:

var ('y,x')
e = EllipticCurve(y^2==(x^3)+(2*x)-2)
P = e(1,1)
print 5*P
#5.1 Farmats Pseudoprime checkers
a = 3
N = 91
if a^(N-1)%N==1:
print 'It is a prime according to farmats little theorem but in real it is '
print is_prime(N)
###################################################################################
##############################################
#5.2 Carmicheal Number checker
a = 2
N = 561
countCoP = 0
count = 0
for i in [2..N-1]:
if gcd(i,N)==1:
countCoP = countCoP+1
if a^(N-1)%N==1:
count = count+1
print 'This is the total numbers of co primes for the number',countCoP
print 'This is the total numbers of co primes for which the farmats little theorem
holds',count
if countCoP == count:
print 'Entered Number is indeed a carmicheal number'
print factor(561)
###################################################################################
##############################################
#5.3 Prove a number is Carmicheal
var('n,k')
eq = [n==((6*k)+1)*((12*k)+1)*((18*k)+1)]
print solve(eq,n)
?
###################################################################################
##############################################
#5.4 Rabin Miller Test
n = 561
print 'Rabin Miller Test '
print factor(n-1)
#Take the values from the output in the form of p-1 = q x a^k
k = 4
q = 35
#Step 1 before entering the loop
R = (2^q)%n
print '2 ^',q, '=',R,' mod ',n
if R==1:
print 'The number is composite'
for i in [1..k-1]:
q=q*2
R = (R^2)%n
print '2 ^',q, '=',R,' mod ',n
if(R==1):
print 'The number is composite'
break
if(R==-1):
print 'The number is prime'
break
?

var ('y,x')
e = EllipticCurve(y^2==(x^3)+(2*x)-2)
P = e(1,1)
print 5*P
?
?
It is a prime according to farmats little theorem but in real it is
False
This is the total numbers of co primes for the number 319
This is the total numbers of co primes for which the farmats little theorem holds
319
Entered Number is indeed a carmicheal number
3 * 11 * 17
[
n == 1296*k^3 + 396*k^2 + 36*k + 1
]
Rabin Miller Test
2^4 * 5 * 7
2 ^ 35 = 263 mod 561
2 ^ 70 = 166 mod 561
2 ^ 140 = 67 mod 561
2 ^ 280 = 1 mod 561
The number is composite
(162905681/19321 : -2079238703569/2685619 : 1)
In [85]:

# 5.5 FIND A RABIN MILLER WITNESS


N=1729
#N=2^k q+1
factor(N-1)
k=6
q=3^3
?
a=9
#check if a is a Rabin Miller Witness
#Check 1: a^q=?1 mod N
count = 0
for a in [10..1728]:
if count == 1:
break
?
l=pow(a,q,N)
if l==1:
print 'N passes the rabbin miller test, 1.Satisfied'
print 'a is not a Rabin Miller Witness'
else:
m=0 #counts how many times we get -1
for i in [0..5]:
y=pow(a,q*2^i,N)
if y==-1:
m=m+1
if m>0:
print 'N passes, 2.Satisfied, (but 1. is not)'
print 'a is not a Rabin Miller Witness'
else:
print 'a=',a,'is a Rabin Miller witness (that n is not a prime)'
count = count+1
#change the value of count to get more witness
?
?
N passes, 2.Satisfied, (but 1. is not)
a is not a Rabin Miller Witness
a= 11 is a Rabin Miller witness (that n is not a prime)
In [91]:

#5.6 CREATE INDIEX


#THIS IS HOW WE CAN SOLVE MOD EQUATIONS
for x in [1..12]:
if (mod((2^x),13)==1):
print x
12

g = 2
k = 141312
p = 194813
?
#Generation of public key
a = (g^k)%p
print 'VALUE OF a',a
print 'a = ',a,' ? ',g,'^',k,' mod ',p
?
#Encrypting message
m = 173124
r = 136297
e1 = (g^r)%p
print 'VALUE OF e1',e1
print 'e1 = ',e1,' ? ',g,'^',r,' mod ',p
?
e2 = (m*(a^r))%p
print 'VALUE OF e2',e2
print 'e2 = ',e2,' ? ',m,'*',a,'^',r,' mod ',p
?
print 'Thus the message sent is (',e1,',',e2,')'
?
#Decrypting Message
c = (e1^k)%p
print 'VALUE OF c',c
print 'c = ',c,' ? ',e1,'^',k,' mod ',p
?
#now we calculate inverse of the mod
im = inverse_mod(c,p)
dM = (e2*im)%p
print 'Decyrpted Message = ',dM,' ? ',e2,'*',im,' mod ',p
?
?
?
sqrt(34).n()
125%11
print (7^6)%11
print 3^4
print 5^3
print 7^2
print 49%11
for i in range(10):
z=i^2
if (z)%11==4:
print i
?
factor(253*5)
a = 2
2^6
gcd(4,13)
?
In [143]:

?
VALUE OF a IS 12
THIS IS THE ANSWER 4717
I am the factor 89 113
False
2^4 * 7
1
In [449]:

# 6.2 Shanks� Baby-step Giant-step algorithm


#Example 2^x = 7 mod 11
?
a = 7
y = 2
p = 19
?
s = ceil(sqrt(p))
print s
?
A = []
B = []
C = [] #STORE LOCATION OF A IN THIS
D = []
?
for i in range(0,s):
value = a*(y^i) % p
A.append(value)
C.append(i)
?
for j in range(1,s+1):
value = y^(j*s) % p
B.append(value)
js=j*s
D.append(js)
?
print A
print C
print B
print D
?
x1,x2 =0,0

for r in A:
for t in B:
if r == t:
x1 = A.index(r)
x2 = B.index(t)
print x1,x2
break

print 'the value of x is ', ((x2+1)*s - x1) % p


5
[7, 14, 9, 18, 17]
[0, 1, 2, 3, 4]
[13, 17, 12, 4, 14]
[5, 10, 15, 20, 25]
1 4
4 1
the value of x is 6
In [193]:

Legendre Symbol and Qudaratic reciprocity


#7.1 Legendre Symbol and Qudaratic reciprocity
p = 6
q = 7
print is_prime(p)
print is_prime(q)
f = 0
if(is_prime(p)&is_prime(q)):
print 'First Condition true flip with positive sign'
f = f+1
#Condition 1 p=q==3 mod 4
if ((p%4==3) & (q%4==3)):
print 'First contion failed Flip it with minus'
if (f == 0):
print factor (p)
print factor (q)
z = 7
if (z%8==1 or z%8==7):
print 'Put 1 in place of the value you have '
if (z%8==3 or z%8==75):
print 'Put -1 in place of the value you have '

#USE THIS TO GET THE ANSWER DIRECTLY VERIFY WITH THIS


kronecker(p,q)
?
?
False
True
2 * 3
7
Put 1 in place of the value you have
In [202]:

#7.2 Solovay Strassen Primality Test


#a^(n-1)/2 = (a/n) mod n
a = 345678
n = 409537
b = kronecker(a,n)
k = (n-1)/2
print k
print b
z = (a^k)%n
print z
if (b == z):
print 'The given number passes the solovay Strassen Primality Test'
204768
-1
261984
In [318]:

#8.1 Calculate the third point on elliptic curve if the first and second points are
known
# eq =[(y^2) == (x^3)+a*(x^2)+(b*x)+c]
a = 0
b = 0
c = 17
x1 = -2
y1 = 3
x2 = -1
y2 = 4
m = (y2-y1)/(x2-x1)
x3 = (-a)+(m^2)-x1-x2
y3 = y1+m*(-a+(m^2)-(2*x1)-x2)
print x3,',',y3
4 , 9
In [264]:

#8.2 Calculate the second point on an elliptic curve if only one point is known
# eq =[(y^2) == (x^3)+a*(x^2)+(b*x)+c]
a = 0
b = 0
c = 17
x1 = -2
y1 = 3
m = (3*(x1^2)+(2*a*x1)+b)/(2*y1)
x2 = (-a)+(m^2)-2*x1
y2 = y1+m*(-a+(m^2)-(3*x1))
print x2,',',y2
8 , 23
In [445]:

#9.1 To Calculate multiples of Point modulo prime


# NOTE IF y1 =0 2P is point of infinity
x1 = 7
y1 = 5
a = 0
b = 0
p = 11
m = (((3*x1^2)+(2*a*x1)+b)/(2*y1))%p
print 'Value of M is = ',m
x = ((-a)+(m^2)-2*x1)%p
print 'Value of X is = ',x
k = m*(x1-x)
y = (k-y1)%p
print 'Value of Y is =',y
print 'The point 2P is = (',x,',',y,')'
calCulateMore(2,3,x1,y1)
#Use this to find 3P and so one, after finding 3P plug in 3P+P to find 4P and so
on.
def calCulateMore(x1,y1,x2,y2):
m = ((y2-y1)/(x2-x1))%p
x = (-a+(m^2)-x1-x2)%p
y = (-y1+m*(x1-x))%p
print 'The this point is = (',x,',',y,')'
Value of M is = 7
Value of X is = 2
Value of Y is = 8
The point 2P is = ( 2 , 8 )
The this point is = ( 7 , 6 )
In [271]:

l points on an elliptic Curve modulo p


#9.2 Finding all points on an elliptic Curve modulo p
# Equation of curve y^2 = x^3 - 3*x^2 + 3*x mod 5
p = 5
X = []
X2 = []
Y2 = []
for i in range(p):
print 'ITRATION No',i
k = i%p
print 'X = ',k
X.append(k)
l = (i^2)%p
print 'X^2 = ',l
X2.append(l)
e = (i^3)-3*(i^2)+3*i
eq = e%p
Y2.append(eq)
print 'Y^2 = ', eq
?
print 'Table for x = ',X
print 'Table for X^2 = ',X2
print 'Table for Y^2 = ',Y2
ITRATION No 0
X = 0
X^2 = 0
Y^2 = 0
ITRATION No 1
X = 1
X^2 = 1
Y^2 = 1
ITRATION No 2
X = 2
X^2 = 4
Y^2 = 2
ITRATION No 3
X = 3
X^2 = 4
Y^2 = 4
ITRATION No 4
X = 4
X^2 = 1
Y^2 = 3
Table for x = [0, 1, 2, 3, 4]
Table for X^2 = [0, 1, 4, 4, 1]
Table for Y^2 = [0, 1, 2, 4, 3]
In [330]:

#9.3 Succesive Squaring


n = 2008
n.digits(2)
Out[330]:
[0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1]
In [355]:

#10.1 Fermat Factorisation


n = 17363
s = ceil(sqrt(n))
m = 0
i = 0
while m==0:
print 'I am round Number ',i
z = (s^2)-n
print 's^2 - n = ',s^2,'-',n
print '=',z
if(z.is_perfect_power()):
print 'The number is a perfect square so we have ',sqrt(z)
print 'The factors are (',s-sqrt(z),',',s+sqrt(z),')'
break
s = s+1
i = i+1
print 'The number ',z,'is not a perfect square so we try a new value'
I am round Number 0
s^2 - n = 17424 - 17363
= 61
The number 61 is not a perfect square so we try a new value
I am round Number 1
s^2 - n = 17689 - 17363
= 326
The number 326 is not a perfect square so we try a new value
I am round Number 2
s^2 - n = 17956 - 17363
= 593
The number 593 is not a perfect square so we try a new value
I am round Number 3
s^2 - n = 18225 - 17363
= 862
The number 862 is not a perfect square so we try a new value
I am round Number 4
s^2 - n = 18496 - 17363
= 1133
The number 1133 is not a perfect square so we try a new value
I am round Number 5
s^2 - n = 18769 - 17363
= 1406
The number 1406 is not a perfect square so we try a new value
I am round Number 6
s^2 - n = 19044 - 17363
= 1681
The number is a perfect square so we have 41
The factors are ( 97 , 179 )
In [410]:

#10.2 Pollard's Rho Method


n = 33157
x = 6
x1 = ((x^2)+2)%n
x2 = ((x1^2)+2)%n
s=abs(x1-x2)
print x1,x2
print gcd(s,n)
count =0
m=0
while m==0:
print 'I am counting ',count
x1=((x1^2)+2)%n
x2=((x1^2)+2)%n
s=abs(x1-x2)
print x1,x2,s,gcd(s,n)
if gcd(s,n)>1:
print 'done bro'
print gcd(s,n)
m=1
break
print 'Value of x2 is ',x2
x1=x2
print 'value of x1 is ',x1
count = count+1

2^5
38 1446
1
I am counting 0
1446 2027 581 1
Value of x2 is 2027
value of x1 is 2027
I am counting 1
30420 30846 426 71
done bro
71
Out[410]:
32
In [418]:

#polards ro -1 factors
B = 12
factorOfB = factorial(4)
N = 1711
for i in [2..20]:
k = ((i^factorOfB))%N
g = gcd(k-1,N)
if gcd(k-1,N)>1:
print 'VALUE OF a IS ',i
print 'THIS IS THE ANSWER',k-1
otherfactor = N/g
print 'I am the factor',g,otherfactor
break
?
VALUE OF a IS 12
THIS IS THE ANSWER 174
I am the factor 29 59
In [436]:

var ('y,x')
e = EllipticCurve(y^2==(x^3)+(2*x)-2)
P = e(1,1)
print P
(1 : 1 : 1)
Signature: factor(n, proof=None, int_=False, algorithm='pari', verbose=0,
**kwds)
Docstring:
Returns the factorization of "n". The result depends on the type
of "n".

If "n" is an integer, returns the factorization as an object of


type "Factorization".

If n is not an integer, "n.factor(proof=proof, **kwds)" gets


called. See "n.factor??" for more documentation in this case.

Warning: This means that applying "factor" to an integer result


of a symbolic computation will not factor the integer, because it
is considered as an element of a larger symbolic ring.EXAMPLE:

sage: f(n)=n^2
sage: is_prime(f(3))
False
sage: factor(f(3))
9

INPUT:

* "n" - an nonzero integer

* "proof" - bool or None (default: None)

* "int_" - bool (default: False) whether to return answers as


Python ints

* "algorithm" - string

* "'pari'" - (default) use the PARI c library

* "'kash'" - use KASH computer algebra system (requires the


optional kash package be installed)

* "'magma'" - use Magma (requires magma be installed)

* "verbose" - integer (default: 0); PARI's debug variable is set


to this; e.g., set to 4 or 8 to see lots of output during
factorization.

OUTPUT:

* factorization of n

The qsieve and ecm commands give access to highly optimized


implementations of algorithms for doing certain integer
factorization problems. These implementations are not used by the
generic factor command, which currently just calls PARI (note that
PARI also implements sieve and ecm algorithms, but they aren't as
optimized). Thus you might consider using them instead for certain
numbers.

The factorization returned is an element of the class


"Factorization"; see Factorization?? for more details, and examples
below for usage. A Factorization contains both the unit factor (+1
or -1) and a sorted list of (prime, exponent) pairs.
The factorization displays in pretty-print format but it is easy to
obtain access to the (prime,exponent) pairs and the unit, to
recover the number from its factorization, and even to multiply two
factorizations. See examples below.

EXAMPLES:

sage: factor(500)
2^2 * 5^3
sage: factor(-20)
-1 * 2^2 * 5
sage: f=factor(-20)
sage: list(f)
[(2, 2), (5, 1)]
sage: f.unit()
-1
sage: f.value()
-20
sage: factor( -next_prime(10^2) * next_prime(10^7) )
-1 * 101 * 10000019

sage: factor(-500, algorithm='kash') # optional - kash


-1 * 2^2 * 5^3

sage: factor(-500, algorithm='magma') # optional - magma


-1 * 2^2 * 5^3

sage: factor(0)
Traceback (most recent call last):
...
ArithmeticError: Prime factorization of 0 not defined.
sage: factor(1)
1
sage: factor(-1)
-1
sage: factor(2^(2^7)+1)
59649589127497217 * 5704689200685129054721

Sage calls PARI's factor, which has proof False by default. Sage
has a global proof flag, set to True by default (see
"sage.structure.proof.proof", or proof.[tab]). To override the
default, call this function with proof=False.

sage: factor(3^89-1, proof=False)


2 * 179 * 1611479891519807 * 5042939439565996049162197

sage: factor(2^197 + 1) # long time (2s)


3 * 197002597249 * 1348959352853811313 * 251951573867253012259144010843

Any object which has a factor method can be factored like this:

sage: K.<i> = QuadraticField(-1)


sage: factor(122 - 454*i)
(-3*i - 2) * (-i - 2)^3 * (i + 1)^3 * (i + 4)

To access the data in a factorization:

sage: f = factor(420); f
2^2 * 3 * 5 * 7
sage: [x for x in f]
[(2, 2), (3, 1), (5, 1), (7, 1)]
sage: [p for p,e in f]
[2, 3, 5, 7]
sage: [e for p,e in f]
[2, 1, 1, 1]
sage: [p^e for p,e in f]
[4, 3, 5, 7]
Init docstring: x.__init__(...) initializes x; see help(type(x)) for signature
File: /opt/sagemath-7.4/local/lib/python2.7/site-
packages/sage/arith/misc.py
Type: function

Anda mungkin juga menyukai