黑马程序员技术交流社区

标题: 一道编程题目---求代码 [打印本页]

作者: sabrina妖儿    时间: 2015-11-15 21:11
标题: 一道编程题目---求代码
/*我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15*/
作者: olivec    时间: 2016-2-13 17:36
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;
        }
}

作者: 苗超维    时间: 2016-2-14 00:23
谢谢 我也学习到了

作者: ApiceLove    时间: 2016-2-14 12:19
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;
               
        }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2