2012-06-16 241 views
0

我编写了应该打印出100到200之间的素数的程序(我在程序中添加了一些额外的打印命令,以便我可以看到它的位置)任何人都可以给我一个暗示为什么它停在137,而脚本正在检查这个数字?程序意外停止

谢谢!

下面是脚本:

import math 
import sys 
index=100.0 
checker=2.0 

def start(): 
    print("A") 
    global index 
    while index<=200.0: 
     fu1() 
    if index>200.0: 
     end() 

def fu1(): 
    print ("B") 
    print ("checker", checker) 
    print ("index", index) 
    global index 
    global checker 
    varb=index/checker 
    varb2=round(index/checker, 0) 
    if checker>=index: 
     print ("C") 
     print(index) 
     index=index+1.0 
     checker=2.0 
     start() 
    if varb2==varb: 
     print("D") 
     checker=2.0 
     index=index+1.0 
     start() 
    checker=checker+1.0 
    fu1() 


def end(): 
    print("E") 
    print("ENDED") 
    sys.exit() 

start() 
+0

也许这一个:http://stackoverflow.com/questions/3289430/python-recursion – PeterMmm

+0

为什么'fu1'自称? –

+0

@DavidSchwartz - 递归? ;)虽然有点奇怪的递归,但我承认。 – weronika

回答

2

你的程序在递归调用(默认为1000蟒蛇,我认为)的数量达到了极限......您可以使用此命令sys.setrecursionlimit(5000)增加它例如。

+0

太棒了!非常感谢。我这样做,它的工作。但是请你再告诉我一件事。打印所有素数达到200后,打印完“End”后,打印出如下所示的大量红色消息:文件“ 文件”C:\ Users \ Marcela \ Documents \ HH.txt“,第27行, fu1 start() 文件“C:\ Users \ Marcela \ Documents \ HH.txt”,第34行,第12行,开头 end() 文件“C:\ Users \ Marcela \ Documents \ HH.txt”,第34行,在结束 sys.exit() SystemExit你现在可以告诉我,以避免这个? – user1460981

+0

再次感谢 - 它的工作原理,但不是检查更大的数字看起来(通过Weronika的评论),我已经创建问题召回Fu1 “虽然” - 如果您有关于如何以正确方式重现此过程的建议,请告诉我。 – user1460981