求素数练习,考查算法设计与优化。输入一个整数,输出小于等于这个整数的所有素数及数量。 注意:本题目为加分题,总分30分,得分计算方式如下:
(所有得到满分的同学程序所用时长的平均值-你的程序运行所用时长)/所有答案所用时长最小值*30分,为负值者不得分。
输入格式:
整型数,取值范围为大于2的整数。
输出格式:
输出素数的个数,格式为Prime num[数量]
输入样例1:
在这里给出一组输入。例如:
10
输出样例1:
在这里给出相应的输出。例如:
Prime num[4]
输入样例2:
在这里给出一组输入。例如:
100
输出样例2:
在这里给出相应的输出。例如:
Prime num[25]
参考代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
int n=input.nextInt();
System.out.println("Prime num["+primeNumber(n)+"]");
}
public static int primeNumber(int n) {
int[] primes = new int[n + 1];
boolean[] isNotPrime = new boolean[n + 1];
int count = 0;
for(int i = 2; i <= n; i++) {
if(!isNotPrime[i]) {
primes[count++] = i;
}
for(int j = 0; j < count; j++) {
if(i * primes[j] > n) {
break;
}
isNotPrime[i * primes[j]] = true;
if(i % primes[j] == 0) {
break;
}
}
}
return count;
}
}