저는 파이썬에 익숙하지 않고 중첩 루프를 사용하여 50보다 작은 모든 소수를 인쇄해야하는이 코드에 몇 가지 문제가 있습니다.소수 파이썬 중첩 루프
i = 2
while(i < 50):
j = 2
while(j <= (i/j)):
if not(i%j):
break
j = j + 1
if (j > i/j):
print(i, " is prime")
i = i + 1
출력은 다음과 같습니다 : 여기
코드입니다2 is prime
3 is prime
5 is prime
7 is prime
11 is prime
13 is prime
17 is prime
19 is prime
23 is prime
29 is prime
31 is prime
37 is prime
41 is prime
43 is prime
47 is prime
그래서 3 후, j는 2이어야하며, 그 다음은 소수 아니라 내가 4.해야한다, 그래서 while 루프로 돌아갑니다.
그리고 프로세스가 다시 시작됩니다. j와 i는 하나씩 증가해야합니다. 그래서 j는 3이고 i는 5가되어야하고 5는 소수입니다. 그러면 다시 6으로 증가합니다.
그래서 j는 여전히 3이어야하며 6이어야합니다. 그러나 (3 < = (6/3)) < - 이것은 사실이 아니므로 if 문으로 가고 3은 j가 2보다 크다. i/j는 6이 소수임을 의미한다.
하지만 그렇지 않습니다. 당신은 상식으로 그것을 말할 수 있습니다. 그리고 나는 여기서 내가 잘못한 부분을 알고 싶다. 나는 여기에 어떤 증분도 놓쳤는가? 고맙습니다.
로 받아 주시기 바랍니다, 그것은 완전히 명확하지 않다. 제발 좀 더 자세히 설명해주세요. – NPE
네, 그 프로그램이 옳고 출력물이 정확하다는 것을 압니다. 그러나 나는 틀린 생각을하고 싶습니다 *. – James
오, 알았어요. 내러티브를 다시 형식화하지 않는 이유는 다음과 같습니다. (1) 한 줄에 하나의 작업이 있습니다. (2) 각 줄은'i'와'j'의 결과 값이 무엇이라고 생각하는지 보여줍니다. 이것은 당신의 이야기를 많이 * 쉽게 따라 할 수 있습니다 (그리고 당신이 문제를 찾을 수 있도록 도와 줄 수도 있습니다). – NPE