import java.util.ArrayList;
import java.util.List;
public class Solution {
/**
* 获取n个素数
* n: 素数个数
* 返回:最小的N个素数
*/
public List<Integer> getPrimes(int n) {
List<Integer> ret = new ArrayList<Integer>();
// ret.add(x);
int number = Integer.MAX_VALUE;
int counter = 0;
for (int i = 2; i < number; i++) {
if (n <= 0) {
break;
}
counter = 0;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
counter++;
break;
}
}
if (counter == 0) {
ret.add(i);
n--;
}
}
return ret;
}
}
package prime;
/**
* 思路:从整数中提取前n个素数,放入ret中。放入ret条件是Boolean isPrimes(),return ret条件是count<=n-1
*/
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) {
System.out.print(getPrimes(3));
}
/**
* 获取n个素数
* n: 素数个数
* 返回:最小的N个素数
*/
public static List<Integer> getPrimes(int n) {
int number = Integer.MAX_VALUE;
int count = 0;
List<Integer> ret = new ArrayList<Integer>();
for(int i=0;i<number&&count<=n-1;i++){
if(isPrime(i)){
ret.add(i);
count++;
}
}
return ret;
}
public static boolean isPrime(int x){
boolean flag = true;
if(x<2)
return false;
else{
for(int i=2;i<=(int)Math.sqrt(x);i++){
if(x%i==0){
flag = false;
break;
}
}
}
return flag;
}
}
importjava.util.ArrayList;importjava.util.List;publicclassSolution {/*** 获取n个素数* n: 素数个数* 返回:最小的N个素数*/publicList<Integer> getPrimes(intn) {List<Integer> ret = newArrayList<Integer>();if(n == 0){returnret;}ret.add(2);n-=1;// ret.add(x);inti = 3;while(n > 0){if(isSuShu(i)){ret.add(i);n--;}i+=2;}returnret;}publicbooleanisSuShu(intn){intk = (int)Math.sqrt(n);for(inti = 2; i <= k; i++){if(n % i == 0){returnfalse;}}returntrue;}}
import java.util.ArrayList;
import java.util.List;
public class Solution {
/**
* 获取n个素数
* n: 素数个数
* 返回:最小的N个素数
*/
public List<Integer> getPrimes(int n) {
List<Integer> ret = new ArrayList<Integer>();
// ret.add(x);
int m;
int l = 0;
int ii = Integer.MAX_VALUE;
if(n > 1){
ret.add(2);
l = 1;
}
label:
for(int i = 3; i <= ii && l < n; i += 2){
m = 3;
for(; m < i; m += 2){
if(i % m == 0){
continue label;
}
}
ret.add(i);
l++;
}
return ret;
}
}
import java.util.ArrayList; import java.util.List; public class Solution { /** * 获取n个素数 * n: 素数个数 * 返回:最小的N个素数 */ public List < Integer > getPrimes(int n) { List < Integer > ret = new ArrayList < Integer > (); // ret.add(x); for (int i = 2; i < Integer.MAX_VALUE && ret.size() < n; i++) { boolean flag = true; int temp = (int)Math.sqrt(i); for (int j = 0; j < ret.size() && ret.get(j) <= temp; j++) if (i % ret.get(j) == 0) { flag = false; break; } if (flag) ret.add(i); } return ret; } }
#include <vector>
using namespace std;
class Solution {
public:
/**
* 获取n个素数
* n: 素数个数
* 返回:最小的N个素数
*/
vector<int> getPrimes(int n) {
vector<int> ret;
int d[800000]={0};
int i,j,N=0;
d[1]=d[0]=1;
for(i=4;i<800000;i+=2)
d[i]=1;
for(i=3;i*i<800000;i+=2)
if(!d[i])
{
for(j=i*i;j<800000;j+=2*i)
{
d[j]=1;
}
}
for(i=0;i<800000;i++)
if(!d[i])
{ if(N==n)break;
ret.push_back(i);
N++;
}
return ret;
}
};
public class Solution {
/**
* 获取n个素数
* n: 素数个数
* 返回:最小的N个素数
*/
public List<Integer> getPrimes(int n) {
List<Integer> ret = new ArrayList<Integer>();
int sum = 0;
int i = 1;
while(n>sum){
i++;
for(int j=2;j<=i;j++){
if(i%j ==0){
if(i==j){
ret.add(i);
sum++;
}else{
break;
}
}
}
} // ret.add(x);
return ret;
}
#! /bin/bash declare -i lastnum=0 primelist="2" if [ $# -gt 0 ];then (( lastnum+=$1 )) echo "positive primes up to $lastnum" if [ $lastnum -ge 2 ]; then echo "2" for n in `seq 3 2 $lastnum` do p=0 for t in $primelist do (( remainder=n%t )) if [ $remainder -eq 0 ]; then p=1 break fi done if [ $p -eq 0 ]; then echo $n if (( lastnum > (n * n) ));then primelist="$primelist $n" fi fi done fi fi
import java.util.ArrayList;
import java.util.List;
public class Solution {
/**
* 获取n个素数
* n: 素数个数
* 返回:最小的N个素数
*/
public List<Integer> getPrimes(int n) {
List<Integer> ret = new ArrayList<Integer>();
for(int i=2;i<=Integer.MAX_VALUE;i++){
int count=2;
for(int j=2;j<=i/2;j++){
if(i%j==0){
count++;
break;
}
}
if(count==2){
if(ret.size()==n){
break;
}
ret.add(i);
}
}
return ret;
}
}
#include <vector>using namespace std;classSolution {public:/*** 获取n个素数* n: 素数个数* 返回:最小的N个素数*/bool IsPrimer(intn){for(inti = 2;i*i<=n;++i)if(n%i==0)returnfalse;returntrue;}vector<int> getPrimes(intn) {vector<int> ret;intst = 2;while(n>0){if(IsPrimer(st)){ret.push_back(st);++st;--n;}else++st;}returnret;}};
#include <vector>
#include <iostream>
#include <climits>
using namespace std;
class Solution {
public:
const int SHIFT = 5;
const int MASK = 0x1F;
const int Max = INT_MAX;
int bitmap[10000]{1,1,0,0,1,0};
void set_not_prime(int num){
bitmap[num >> SHIFT] |= (1<<(num&MASK));
}
bool not_prime(int num){
return bitmap[num >> SHIFT] & (1<<(num&MASK));
}
/*
* 获取n个素数
* n: 素数个数
* 返回:最小的N个素数
*/
vector<int> getPrimes(int n) {
vector<int> ret;
int count = 0;
int pos = 2;
while(count < n){
if(not_prime(pos)){
pos ++;
continue;
}
count += 1;
ret.push_back(pos);
int up = pos + pos;
while(up < 320000){
set_not_prime(up);
up += pos;
}
pos += 1;
}
// ret.push_back(x);
return ret;
}
};
//筛选法,再利用bitmap位标示整数
#include <vector>
using namespace std;
class Solution {
public:
/**
* 获取n个素数
* n: 素数个数
* 返回:最小的N个素数
*/
vector<int> getPrimes(int n) {
vector<int> ret;
if(n<=1) return ret;
long i,j;
unsigned char arr[1<<13]={0};
for(i=2;i<(1<<16);++i){
for(j=i+i;j<(1<<16);j=j+i){
arr[j/8]=arr[j/8]|(1<<(j%8));
}
}
for(i=2;i<(1<<16)&&n>0;++i){
if(!(arr[i/8]&(1<<(i%8)))){
ret.push_back(i);
--n;
}
}
return ret;
}
};
思路:首先判断给出的n是否大于0,如果不是则直接返回ret。如果n > 0,则进行一下处理:
vector<int> getPrimes(int n) {
vector<int> ret;
// ret.push_back(x);
int prime_cnt =0;
for(int i=2;prime_cnt<n;i++){
bool is_prime =1;
for(int j=0;j<ret.size()&&(ret[j]*ret[j]<=i);j++){
if(i%ret[j]==0){
is_prime =0;
break;
}
}
if(is_prime){
ret.push_back(i);
prime_cnt++;
}
}
return ret;
}