数字分解器对循环不起作用。是什么原因?

时间:2018-03-31 20:34:52

标签: python loops while-loop operator-keyword

编辑:已解决!这是' /'运算符,当所有这些都被' //'操作员一切顺利! 我做了一个应该把数字分解成前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? 感谢您的耐心

0 个答案:

没有答案