编辑:已解决!这是' /'运算符,当所有这些都被' //'操作员一切顺利! 我做了一个应该把数字分解成前5个素数的东西,但是当我把一个大数字放在它上面时,它就会在中途停止。
x = int(input('Number to decompose:'))
while((x % 2)== 0):
x = int(x / 2)
print(x, '2')
while((x % 2)== 0):
x = int(x / 2)
print(x, '2')
while((x % 5)== 0):
x = int(x / 5)
print(x, '5')
while((x % 7)== 0):
x = int(x / 7)
print(x, '7')
while((x % 11)== 0):
x = int(x / 11)
print(x, '11')
如果我介绍一个像33578167194000这样的小数字,它会减少到13,但是如果把它放在547945845108645662650548617216这个数字中途停止
Number to decompose:547945845108645662650548617216
273972922554322831325274308608 2
136986461277161415662637154304 2
68493230638580707831318577152 2
34246615319290353915659288576 2
17123307659645176957829644288 2
8561653829822588478914822144 2
4280826914911294239457411072 2
2140413457455647119728705536 2
1070206728727823559864352768 2
535103364363911779932176384 2
267551682181955889966088192 2
133775841090977944983044096 2
66887920545488972491522048 2
33443960272744486245761024 2
16721980136372243122880512 2
8360990068186121561440256 2
4180495034093060780720128 2
2090247517046530390360064 2
1045123758523265195180032 2
522561879261632597590016 2
261280939630816298795008 2
130640469815408149397504 2
65320234907704074698752 2
32660117453852037349376 2
16330058726926018674688 2
8165029363463009337344 2
4082514681731504668672 2
2041257340865752334336 2
1020628670432876167168 2
510314335216438083584 2
255157167608219041792 2
127578583804109520896 2
63789291902054760448 2
31894645951027380224 2
15947322975513690112 2
7973661487756845056 2
3986830743878422528 2
1993415371939211264 2
996707685969605632 2
498353842984802816 2
249176921492401408 2
124588460746200704 2
62294230373100352 2
31147115186550176 2
15573557593275088 2
7786778796637544 2
3893389398318772 2
1946694699159386 2
973347349579693 2
88486122689063 11
8044192971733 11
然后停下来。更改零的数量或数字也会更改数字的分割次数,即使它没有完成分解
编辑:数字不是由这些数字组成,但应该是 - >该号码由以下人员生成:
y = int(random.randrange(0, 20))
print((y))
z = int(random.randrange(0, 20))
print(z)
c = int(random.randrange(0, 20))
print(c)
v = int(random.randrange(0, 20))
print(v)
j = int(random.randrange(0, 20))
print(j)
e = int(b*((2**y)*(3**z)*(5**c)*(7**v)*(11**j)))
for n in (0, 500):
if (e % 10) == 0:
e = int(e / 10)
else:
break
print (int(e), n)
其中b是13 在所有这一切中,有一个错误,不是在分解时抛出13? 感谢您的耐心