티스토리 뷰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
resultA=0
resultB=0
tempCount=0
sosooCount=0
for a in range(-999,1000):
    for b in range(-999,1000):
        n=0
        count=0
        while(1):
            result=int(math.pow(n,2))+a*n+b
            if(result<0):
                n=n+1
                continue
            #result가 소수이면 무한루프 계속 돎, 소수가 아니면 무한루프 탈출
            for i in range(2,int(result/2)+1):
                if(result%i==0):
                    sosooCount=sosooCount+1
            if(sosooCount>0): #소수가 아닌 경우
                break
            else#소수인 경우
                count=count+1
            n=n+1
        if(tempCount<count):
            tempCount=count
            resultA=a
            resultB=b
        print(a,b,count)
        sosooCount=0
print(resultA*resultB)
cs

 

 

 

코드에 논리적 오류가 계속 발견되었고, 결과를 내는 속도도 느려서

 

정답을 찾는 데 오래 걸린 문제다.

 

 

이차식의 값이 음수면 약수를 찾을 수 없기 때문에

 

음수인 것들을 걸러주는 코드가 필요했다.

 

 

초기화해야 할 변수의 위치를 제대로 가져다 두는 것이 중요했다.

'Algorithm > Project Euler' 카테고리의 다른 글

프로젝트 오일러 32번  (0) 2017.06.29
프로젝트 오일러 29번  (0) 2017.06.29
프로젝트 오일러 38번  (0) 2017.06.29
프로젝트 오일러 34번  (0) 2017.06.29
프로젝트 오일러 33번  (0) 2017.06.29
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함