A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sabrina妖儿 中级黑马   /  2015-11-15 21:11  /  698 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15*/

3 个回复

倒序浏览
public class Demo2 {
        public static void main(String[] args) {
                System.out.println(check(4));
                System.out.println(sum(2, 4));
        }

        public static int sum(int n, int m) {
                int count = 0;
                int start = 2;
                int sum = 0;
                while (true) {
                        if (check(start)) {
                                count++;
                        }
                        if (count >= n && count <= m && check(start)) {
                                sum += start;
                        } else if (count > m) {
                                break;
                        }
                        start++;
                }
                return sum;
        }

        public static boolean check(int n) {
                for (int i = 2; i <= n - 1; i++) {
                        if (n % i == 0)
                                return false;
                }
                return true;
        }
}
回复 使用道具 举报
谢谢 我也学习到了
回复 使用道具 举报
package com.itheima.utils;
public class PrimeNumber {
        /**
         * 判定一个整数是否为素数
         * @param value  需要判定的整数
         * @return    是素数返回true,否则返回false
         */
        public static boolean check(int value) {
                if(value<2){
                        return false;
                }
                for (int i = 2; i < value; i++) {
                        if (value % i == 0) {
                                return false;
                        }
                }
                return true;
        }
        /**
         * 查找第index个素数是
         * @param index     第index个素数
         * @return          需要的素数
         */
        public static int getPrimeNumber(int index){
                if(index<0){
                        throw new IllegalArgumentException("输入的"+index+"必须为正整数");
                }
                int acount=0;
                int value;
                for(value=1;acount<index;value++){
                        if(check(value)){
                                acount++;
                        }
                }
                return value-1;
        }
}

public class PrimeNumberDemo {
        public static void main(String[] args) {
                int n=2;
                int m=4;
                System.out.println(getSum(n,m));
        }
        private static int getSum(int n,int m){
                int sum=0;
                for(int i=n;i<=m;i++){
                        sum=sum+PrimeNumber.getPrimeNumber(i);
                }
                return sum;
               
        }
}

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马