本文整理汇总了Python中sage.rings.all.ZZ.prime_divisors方法的典型用法代码示例。如果您正苦于以下问题:Python ZZ.prime_divisors方法的具体用法?Python ZZ.prime_divisors怎么用?Python ZZ.prime_divisors使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.rings.all.ZZ
的用法示例。
在下文中一共展示了ZZ.prime_divisors方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: add_sha_tor_primes
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import prime_divisors [as 别名]
def add_sha_tor_primes(N1, N2):
"""
Add the 'sha', 'sha_primes', 'torsion_primes' fields to every
curve in the database whose conductor is between N1 and N2
inclusive.
"""
query = {}
query["conductor"] = {"$gte": int(N1), "$lte": int(N2)}
res = curves.find(query)
res = res.sort([("conductor", pymongo.ASCENDING)])
n = 0
for C in res:
label = C["lmfdb_label"]
if n % 1000 == 0:
print label
n += 1
torsion = ZZ(C["torsion"])
sha = RR(C["sha_an"]).round()
sha_primes = sha.prime_divisors()
torsion_primes = torsion.prime_divisors()
data = {}
data["sha"] = int(sha)
data["sha_primes"] = [int(p) for p in sha_primes]
data["torsion_primes"] = [int(p) for p in torsion_primes]
curves.update({"lmfdb_label": label}, {"$set": data}, upsert=True)
示例2: allbsd
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import prime_divisors [as 别名]
def allbsd(line):
r""" Parses one line from an allbsd file. Returns the label and a
dict containing fields with keys 'conductor', 'iso', 'number',
'ainvs', 'rank', 'torsion', 'torsion_primes', 'tamagawa_product',
'real_period', 'special_value', 'regulator', 'sha_an', 'sha',
'sha_primes', all values being strings or floats or ints or lists
of ints.
Input line fields:
conductor iso number ainvs rank torsion tamagawa_product real_period special_value regulator sha_an
Sample input line:
11 a 1 [0,-1,1,-10,-20] 0 5 5 1.2692093042795534217 0.25384186085591068434 1 1.00000000000000000000
"""
data = split(line)
label = data[0] + data[1] + data[2]
ainvs = parse_ainvs(data[3])
torsion = ZZ(data[5])
sha_an = RR(data[10])
sha = sha_an.round()
sha_primes = sha.prime_divisors()
torsion_primes = torsion.prime_divisors()
data = {
'conductor': int(data[0]),
'iso': data[0] + data[1],
'number': int(data[2]),
'ainvs': ainvs,
'rank': int(data[4]),
'tamagawa_product': int(data[6]),
'real_period': float(data[7]),
'special_value': float(data[8]),
'regulator': float(data[9]),
'sha_an': float(sha_an),
'sha': int(sha),
'sha_primes': [int(p) for p in sha_primes],
'torsion': int(torsion),
'torsion_primes': [int(p) for p in torsion_primes]
}
return label, data
示例3: an_padic
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import prime_divisors [as 别名]
#.........这里部分代码省略.........
Test for :trac:`15737`::
sage: E = EllipticCurve([-100,0])
sage: s = E.sha()
sage: s.an_padic(13)
1 + O(13^20)
"""
try:
return self.__an_padic[(p,prec)]
except AttributeError:
self.__an_padic = {}
except KeyError:
pass
E = self.Emin
tam = E.tamagawa_product()
tors = E.torsion_order()**2
r = E.rank()
if r > 0 :
reg = E.padic_regulator(p)
else:
if E.is_supersingular(p):
reg = vector([ Qp(p,20)(1), 0 ])
else:
reg = Qp(p,20)(1)
if use_twists and p > 2:
Et, D = E.minimal_quadratic_twist()
# trac 6455 : we have to assure that the twist back is allowed
D = ZZ(D)
if D % p == 0:
D = ZZ(D/p)
for ell in D.prime_divisors():
if ell % 2 == 1:
if Et.conductor() % ell**2 == 0:
D = ZZ(D/ell)
ve = valuation(D,2)
de = ZZ( (D/2**ve).abs() )
if de % 4 == 3:
de = -de
Et = E.quadratic_twist(de)
# now check individually if we can twist by -1 or 2 or -2
Nmin = Et.conductor()
Dmax = de
for DD in [-4*de,8*de,-8*de]:
Et = E.quadratic_twist(DD)
if Et.conductor() < Nmin and valuation(Et.conductor(),2) <= valuation(DD,2):
Nmin = Et.conductor()
Dmax = DD
D = Dmax
Et = E.quadratic_twist(D)
lp = Et.padic_lseries(p)
else :
lp = E.padic_lseries(p)
D = 1
if r == 0 and D == 1:
# short cut for rank 0 curves, we do not
# to compute the p-adic L-function, the leading
# term will be the L-value divided by the Neron
# period.
ms = E.modular_symbol(sign=+1, normalize='L_ratio')
lstar = ms(0)/E.real_components()
bsd = tam/tors
if prec == 0:
示例4: BigArithGroup_class
# 需要导入模块: from sage.rings.all import ZZ [as 别名]
# 或者: from sage.rings.all.ZZ import prime_divisors [as 别名]
class BigArithGroup_class(AlgebraicGroup):
r'''
This class holds information about the group `\Gamma`: a finite
presentation for it, a solution to the word problem,...
Initializes the group attached to a `\ZZ[1/p]`-order of the rational quaternion algebra of
discriminant `discriminant` and level `n`.
TESTS:
sage: from darmonpoints.sarithgroup import BigArithGroup
sage: GS = BigArithGroup(7,6,1,outfile='/tmp/darmonpoints.tmp',use_shapiro=False) # optional - magma
sage: G = GS.small_group() # optional - magma
sage: a = G([2,2,1,1,1,-3]) # optional - magma
sage: b = G([2,2,2]) # optional - magma
sage: c = G([3]) # optional - magma
sage: print(a * b) # random # optional - magma
-236836769/2 + 120098645/2*i - 80061609/2*j - 80063439/2*k
sage: b.quaternion_rep # random # optional - magma
846 - 429*i + 286*j + 286*k
'''
def __init__(self,base,p,discriminant,abtuple = None,level = 1,grouptype = None,seed = None,outfile = None,magma = None,timeout = 0, use_shapiro = True, character = None, nscartan = None, matrix_group = False):
self.seed = seed
self.magma = magma
self._use_shapiro = use_shapiro
self._matrix_group = matrix_group
if seed is not None:
verbose('Setting Magma seed to %s'%seed)
self.magma.eval('SetSeed(%s)'%seed)
self.F = base
if self.F != QQ:
Fideal = self.F.maximal_order().ideal
self.ideal_p = Fideal(p)
self.norm_p = ZZ(p.norm())
self.discriminant = Fideal(discriminant)
self.level = Fideal(level)
else:
self.ideal_p = ZZ(p)
self.norm_p = ZZ(p)
self.discriminant = ZZ(discriminant)
self.level = ZZ(level)
if nscartan is not None:
self.level *= nscartan
self.p = self.norm_p.prime_divisors()[0]
if not self.ideal_p.is_prime():
raise ValueError('p (=%s) must be prime'%self.p)
if self._use_shapiro:
covol = covolume(self.F,self.discriminant,self.level)
else:
covol = covolume(self.F,self.discriminant,self.ideal_p * self.level)
verbose('Estimated Covolume = %s'%covol)
difficulty = covol**2
verbose('Estimated Difficulty = %s'%difficulty)
verbose('Initializing arithmetic group G(pn)...')
t = walltime()
lev = self.ideal_p * self.level
if character is not None:
lev = [lev, character]
self.Gpn = ArithGroup(self.F,self.discriminant,abtuple,lev,grouptype = grouptype,magma = magma, compute_presentation = not self._use_shapiro, timeout = timeout,nscartan=nscartan)
self.Gpn.get_embedding = self.get_embedding
self.Gpn.embed = self.embed
self.Gpn.embed_matrix = self.embed_matrix
verbose('Initializing arithmetic group G(n)...')
lev = self.level
if character is not None:
lev = [lev, character]
self.Gn = ArithGroup(self.F,self.discriminant,abtuple,lev,info_magma = self.Gpn,grouptype = grouptype,magma = magma, compute_presentation = True, timeout = timeout,nscartan=nscartan)
self.Gn.embed_matrix = self.embed_matrix
t = walltime(t)
verbose('Time for calculation T = %s'%t)
verbose('T = %s x difficulty'%RealField(25)(t/difficulty))
self.Gn.get_embedding = self.get_embedding
self.Gn.embed = self.embed
if hasattr(self.Gn.B,'is_division_algebra'):
fwrite('# B = F<i,j,k>, with i^2 = %s and j^2 = %s'%(self.Gn.B.gens()[0]**2,self.Gn.B.gens()[1]**2),outfile)
else:
fwrite('# B = M_2(F)',outfile)
try:
basis_data_1 = list(self.Gn.Obasis)
if not self.use_shapiro():
basis_data_p = list(self.Gpn.Obasis)
except AttributeError:
try:
basis_data_1 = self.Gn.basis_invmat.inverse().columns()
if not self.use_shapiro():
basis_data_p = self.Gpn.basis_invmat.inverse().columns()
except AttributeError:
basis_data_1 = '?'
basis_data_p = '?'
self._prec = -1
self.get_embedding(200)
fwrite('# R with basis %s'%basis_data_1,outfile)
self.Gn.get_Up_reps = self.get_Up_reps
if not self.use_shapiro():
fwrite('# R(p) with basis %s'%basis_data_p,outfile)
self.Gpn.get_Up_reps = self.get_Up_reps
#.........这里部分代码省略.........