1. 程式人生 > >藍橋杯 演算法提高 素數求和

藍橋杯 演算法提高 素數求和

問題描述

輸入一個自然數n,求小於等於n的素數之和

樣例輸入

2

樣例輸出

2

資料規模和約定

測試樣例保證 2 <= n <= 2,000,000

解題思路

很簡單一個東西,使用一個迴圈,當前這個數如果為素數的話就將這個數加入到 裡面

//問題描述
//          輸入一個自然數n,求小於等於n的素數之和
//        樣例輸入
//        2
//        樣例輸出
//        2
//        資料規模和約定
//          測試樣例保證 2 <= n <= 2,000,000

import java.util.Scanner;

public class Main
{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int sum = 0; for (int i = 2; i < n; i++) { sum += judgePrime(i,n); } System.out.println(sum); } //判斷num是不是素數 public static
int judgePrime(int num, int n) { //素數即只能被1和這個數本身整除的數,當其他任意一個數能整除這個數表示這個數不為素數 //我們只需要判斷從1開始到這個數的平方根即可判斷這個數是否為素數 //定義flag判斷數字num是否為素數,如果flag為true表示num為素數,反之num則不為素數 boolean flag = false; if (num == 2) { return 2; } else if (num == 3) { return
3; } // double x = Math.sqrt(num); for (int i = 2; i <= Math.sqrt(num); i++) { if (num % i == 0) { flag = false; break; } else { flag = true; } } if (flag == true) { return num; } else { return 0; } } }