본문바로가기
자유게시판
수학을 주제로 떠들어 보세요!

import math

a=1

s=2

while a<1999999:

    a+=2

    for b in range(3,math.sqrt(a)//1+1,2):

        if a%b==0:

            break

        if b==math.sqrt(a)//1 or b==math.sqrt(a)//1+1:

            s+=a

print(s)

오일러 프로젝트 10번 풀면서 짠 코드입니다. 어디가 잘못되었나요? 참고로 문제는 이백만 이하의 소수의 합을 구하는 것입니다.

  •  
    로보카폴리 Lv.11 2020.01.23 22:50

    전 10번을 이렇게 접근했는데, 답이 나오는데 너무 오래 걸리네요. ㅠㅠ

    #include<cstdio>
    int main(){
        int k;
        int sum=0;
        for(int i=2;i<=2000000;i++){
            k=0;
            for(int j=2;j<=i/2;j++){
                if(i%j==0){
                    k++;
                }
            }
            if(k==0){
                printf("%d ",i);
                sum=sum+i;
            }
        }
        printf("\n%d끝",sum);
        return 0;
    }

    댓글 작성하기 좋아요0 댓글수0
  • 폴리매스 문제는 과학기술진흥기금 및 복권기금의 재원으로 운영되고, 과학기술정보통신부와 한국과학창의재단의 지원을 받아 수행된 성과물로 우리나라의 과학기술 발전과 사회적 가치 증진에 기여하고 있습니다.

  • ☎문의 02-6749-3911