3、数素数

题目描述

令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。

输入描述:

输入在一行中给出M和N,其间以空格分隔。

输出描述:

输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

输入例子:

5 27

输出例子:

11 13 17 19 23 29 31 37 41 43

47 53 59 61 67 71 73 79 83 89

97 101 103

java1.7:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main3 {

	private static Scanner input;

	public static void main(String[] args) {
		input = new Scanner(System.in);
		int m=input.nextInt();
		int n=input.nextInt();
		findPrime(m, n);
	}
	
	private static void findPrime(int m,int n){
		List<Integer> list = new ArrayList<>();
		int index = 0;
        int i=2;
        while(index < n){
            if(isPrime(i)){
            	list.add(i);
                index++;
            }
            i++;
        }
		int temp = 0 ;
        int cur = m-1;
        while(true){
         
            while(temp%10!=0 || temp ==0){
                System.out.print(list.get(cur));
                 
                 
                temp++;
                cur++;
                if(cur>=n)break;
                if(temp%10!=0) System.out.print(" ");
            }
            temp=0;
            if(cur>=n){
            	break;
            }else{
            	System.out.println();
            }
        }
	}
	
	private static boolean isPrime(int i) {
		if (i == 1)
			return false;
		else if (i == 2)
			return true;
		else if (i % 2 == 0)
			return false;
		else {
			for (int n = 3; n <= (int) Math.sqrt(i); n++) {
				if (i % n == 0) {
					return false;
				}
			}

			return true;
		}
	}
	    
	
}

测试用例范围内最大耗时53ms,最大占用内存11188KB

猜你喜欢

转载自blog.csdn.net/fuyuwei2015/article/details/81810745