計算素數【Java】

付浩不想寫程式碼發表於2020-12-13

計算素數的和

題目描述
輸入兩個正整數m和n(m<n),求m到n之間(包括m和n)所有素數的和,要求定義並呼叫函式isprime(x)來判斷x是否為素數(素數是除1以外只能被自身整除的自然數)。

輸入
m n

輸出
素數和

樣例輸入
2 3
樣例輸出
5

思路:素數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。求素數時,只需要從2開始到x的開根號的奇數,因為x除了本身和1以外,如果還有約數必定時一個大於平方根和一個小於平方根或兩者等於平方根,則只需判斷小於等於平方根中是否存在約數即可

程式碼實現:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m=sc.nextInt();
        int n = sc.nextInt();
        int sum=0;//計算素數之和
        for(int i=m;i<=n;i++){
            if (isPrime(i)){
                sum+=i;
            }
        }
        System.out.println(sum);
    }
    //判斷是否是素數的方法
    public static boolean isPrime(int x) {
        int m= (int) Math.sqrt(x);
        boolean flag=true;
        if (x==1) return false;//1不是素數
        if (x==2) return true;//2是唯一的是偶數的質數,其餘自然數是素數的必然為奇數
        if (x%2==0) return false;//不為2的偶數都不是素數
        for(int i=2;i<=m;i++){
            if(x%i==0){//有約數,則不是素數
                flag=false;
                break;
            }
        }
        return flag;
    }
}

題目連結:https://www.dotcpp.com/oj/problem1054.html

相關文章