소수구하기 c 프로그램을 python으로 고치는 중입니다..
조회수 1042회
소수구하기 c 프로그램을 python으로 고치는 중입니다..
먼저 구하고자 하는 c 프로그램은 :
#include <stdio.h>
void main()
{
int i, j, count = 1;
long sum = 0;
printf("1~1000 사이의 수 중에서 소수를 구하는 프로그램 \n");
printf("%d\t", 1);
for (i = 1; i <= 1000; i++) {
for (j = 2; j < i; j++) {
if ((i % j) == 0)
break;
}
if (i == j) {
printf("%d\t", i);
count++;
if ((count % 8) == 0)
printf("\n");
}
}
printf("\n1부터 1000 사이의 소수는 %d개이다. \n", count);
}//여기에 코드를 입력하세요
지금 작성한 python프로그램은:
#!/usr/bin/python
count=1
number = input("what is number:")
for i in range(1,number+1):
for j in range (2,i):
if i%j == 0
break;
elif i==j:
count +=1
print i
if count%8 == 0
print(1\n )
#python prime.py
what is number:1000
[root@horyundangIII yoon~]#
[root@horyundangIII yoon~]#
답이 안나옴 ^^;; 어떻게 해야 할지?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
답만 원하시는 거라면... 혹시 에라토스테네스의 체라고 들어 보셨나요?
# 위에 링크붙인 위키백과 문서에서 그대로 퍼와 주석만 달았습니다. # 수학자들이 코딩을 하면 느낌이 이렇게 다르네요. def prime_list(n): # 일단 모든 숫자를 소수라고 가정합니다. sieve = [True] * n # n의 최대 약수가 될 수 있는 자연수를 구한 뒤 m = int(n ** 0.5) # 2, 3, ..., 그 자연수까지를 기준으로 for i in range(2, m+1): # 소수라고 가정한 모든 수를 검사해 봅니다. if sieve[i] == True: # 예컨대 지금 기준삼은 자연수가 6이라면 6, 12, 18, ..., n까지의 모든 수를 for j in range(i+i, n, i): # 소수가 아니라고 번복합니다. sieve[j] = False # 그래도 아직 소수라고 간주되고 있는 숫자들이 있다면 돌려줍니다. return [i for i in range(2, n) if sieve[i] == True] prime_list(20) # [2, 3, 5, 7, 11, 13, 17, 19]
제 생각에 이 과제는 파이썬 과제라기보다는 이미 주어져 있는 (수학적) 원리를 가장 효율적으로 구현하는 감각에 대한 과제입니다. 소수를 구하는 수학적 원리를 우선 더 깊이 탐구해 보시면 좋을 듯합니다.
댓글 입력