C언어 공부해보기(2.소수를 찾아보자)
엑셀에 있는 매크로로 소수를 찾아본 적 있지만 C언어로는 처음 도전해봤다.
어떻게 하면 간단한 코드로 빠르게 소수를 찾을 수 있을까 고민해 봤다.
그래서 한번 만들어 봤는데 지금으로써는 이게 최선의 방법 같다.
원리는 i=3에서 시작하고 j=2에서 시작할 때, 3%2가 != 0 이므로 l이 0인 상태로 내부 for문이 끝나게 되고 밑에 조건에 의해 그 때의 i 값이 출력된다.
그다음 i=4일때는 j=2일 때 4%2 = 0 이므로 내부 for문 안의 조건문에 의해 l= 1이 되고 break가 되서 출력되지 못하고 i=5로 넘어간다. 이 때, 내부 for문이 끝나고 난뒤 외부 for문 맨 아래에 l=0;을 넣어줘야 된다. 그다음 j는 차례로 2,3,4가 되면서 체크하게 되고 한번도 i%j =0이 된적 없으므로 밑에 조건문에 의해 출력되게 된다. 그 다음 계속 반복
그 결과들 ㅋㅋ
거의 실행시키자마자 나온다.
break가 있을 때와 없을 때의 시간 차이는 엄청나다.
물론 다른방법도 있겠지만, 특히 저 l=0, l=1 이 없어도 그런 역할을 해주는 것이 있을 것 같기도 한데 붙여놓은게 약간 맘에 안든다.
위에 set을 1000으로 잡아놓아 1000까지의 모든 소수를 찾았다.
10000, 100000, 1000000도 가능하다. (시간이 좀 더 오래걸리는건 함정)
'<C, JAVA 작품>' 카테고리의 다른 글
10진수를 2진수로 변환시켜보자. (0) | 2015.01.28 |
---|---|
C언어로 여러 수들을 오름차순으로 나열해보기. (0) | 2015.01.28 |
int로 쓸 수 있는 pow 함수 만들기 (0) | 2015.01.24 |
JAVA로 만든 숫자 나열기 (0) | 2011.02.15 |
내 첫 작품 자바 계산기 (2) | 2011.02.14 |