티스토리 뷰
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 |
댓글