2013-06-14 32 views
6

Tôi đang cố gắng chuyển đổi một chương trình mà tôi đã thực hiện trong Cơ bản! (QBASIC trên iOS) sang Python. Tôi đang dần làm việc theo cách của tôi thông qua Python cho Dummies nhưng tôi bị mắc kẹt về cách chuyển đổi FOR vòng lặp. Ai đó có thể giúp đỡ? Dưới đây là mã QB.Chuyển đổi chương trình từ QBasic sang Python

REM Prime Numbers v2 

REM Av 2.2 seconds for 1000 
REM Av 5.3 seconds for 2000 

INPUT "Prime numbers upto";limit 
PRINT 
t1 = TickCount 
PRINT "2 3 "; 
count = 2 
FOR posprime = 3 TO limit STEP 2 
    posfactor = 3 
    prime = 1 
    GOSUB testing 
    IF prime = 1 THEN 
     PRINT posprime " "; 
     count = count + 1 
    END IF 
NEXT posprime 
t2 = TickCount 
PRINT 
PRINT 
PRINT count " prime numbers found" 
PRINT USING "####.#"; "Completed in" t2 - t1 " seconds" 
END 

testing: 
IF posprime/posfactor = INT(posprime/posfactor) THEN 
    prime = 0 
    RETURN 
ELSE 
    posfactor = posfactor + 2 
    IF posfactor > SQR(posprime) THEN 
     RETURN 
    ELSE 
     GOTO testing 

Đây là chương trình mà tôi và con trai tôi thực hiện trên Cơ bản! (QBasic for iOS) hiển thị tất cả các số nguyên tố lên đến giới hạn do người dùng nhập với một số phần được thêm vào bỏ qua các số không rõ ràng. Oh và nó bao gồm một kiểm tra tốc độ nhỏ mà chúng tôi sử dụng để thấy sự khác biệt giữa bộ vi xử lý iPhone và iPad.

Trả lời

4
FOR posprime = 3 TO limit STEP 2 

Trên đường có thể được dịch ra tiếng sau mã Python (giới hạn độc quyền):

for posprime in range(3, limit, 2): 

http://docs.python.org/2/library/functions.html#range

+1

Nó cần phải đi để hạn chế + 1: phạm vi (3, giới hạn + 1, 2) –

+1

Cảm ơn bạn đã trả lời. Vì vậy, phạm vi giới hạn trên là lên đến nhưng không bao gồm, do đó cần giới hạn + 1? – BlackDuke07

+1

@ user2486954, Có. – falsetru

Các vấn đề liên quan