素数和

题目内容:

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。

 

输入格式:

两个整数,第一个表示n,第二个表示m。

 

输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

 

输入样例:

2 4

 

 

输出样例:

15

 

 

import java.util.Scanner;

 

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int n = in.nextInt();// 第一个表示n

        int m = in.nextInt();// 第二个表示m

        int count = 0;// 素数的个数

        int sum1 = 0;// 前n个素数的和

        int sum2 = 0;// 前m个素数的和

        int last = 0;// 第n个素数

 

        for (int i = 2;; i++) {

            if (isprime(i) && count < n) {

                sum1 += i;

                sum2 += i;

                count++;

                last = i;

            } else if (isprime(i) && count <= m) {

                sum2 += i;

                count++;

            } else {

 

            }

 

            if (count == m) {

                break;

            }

        }

 

        System.out.println(sum2 - sum1 + last);// 一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

    }

 

    public static boolean isprime(int num)// 返回true是质数,false不是质数

    {

        int i;

        boolean flag = true;// 默认是质数

 

        if (num < 2)// 负数,0,1不是质数

        {

            flag = false;

        } else if (num == 2)// 2是质数

        {

            flag = true;

        } else {

            for (i = 2; i <= Math.sqrt(num); i++)// 计算开方

            {

                if ((num % i) == 0)// 如果找到能够整除num,不是素数

                {

                    flag = false;

                    break;

                }

            }

        }

 

        return flag;

    }

}

 

 

 

import  java.util.Scanner;
 
public  class  Main {
     public  static  void  main(String[] args) {
         Scanner in =  new  Scanner(System.in);
         int  n = in.nextInt(); // 第一个表示n
         int  m = in.nextInt(); // 第二个表示m
         int  count =  0 ; // 素数的个数
         int  sum1 =  0 ; // 前n个素数的和
         int  sum2 =  0 ; // 前m个素数的和
         int  last =  0 ; // 第n个素数
 
         for  ( int  i =  2 ;; i++) {
             if  (isprime(i) && count < n) {
                 sum1 += i;
                 sum2 += i;
                 count++;
                 last = i;
             else  if  (isprime(i) && count <= m) {
                 sum2 += i;
                 count++;
             else  {
 
             }
 
             if  (count == m) {
                 break ;
             }
         }
 
         System.out.println(sum2 - sum1 + last); // 一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
     }
 
     public  static  boolean  isprime( int  num) // 返回true是质数,false不是质数
     {
         int  i;
         boolean  flag =  true ; // 默认是质数
 
         if  (num <  2 ) // 负数,0,1不是质数
         {
             flag =  false ;
         else  if  (num ==  2 ) // 2是质数
         {
             flag =  true ;
         else  {
             for  (i =  2 ; i <= Math.sqrt(num); i++) // 计算开方
             {
                 if  ((num % i) ==  0 ) // 如果找到能够整除num,不是素数
                 {
                     flag =  false ;
                     break ;
                 }
             }
         }
 
         return  flag;
     }
}

 

转载于:https://www.cnblogs.com/Jack1816274408/p/7825287.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值