Basic Level ----- 1013 数素数 (20分)

前言

环境:C++(g++6.5.0)

题目

Basic Level ----- 1013 数素数 (20分)

输入格式:

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

输出格式:

Basic Level ----- 1013 数素数 (20分)

输入样例:

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

华点

  1. 从2开始依次判断素数,记录个数
  2. 边界问题

代码

/*1013 数素数 (20分)*/

#include <iostream>
#include <cmath>
using namespace std;

int arr[1000];

bool isPrime(int n){
	if(n==2||n==3||n==5||n==7) return true;
	for(int i=3;i<=sqrt(n);i+=2){
		if(n%i==0) return false;
	}
	return true;
}

int main(){
	
	int M,N;
	cin>>M>>N;

	int pos=0;    //记录下一个需要存储的素数位置 ,从0开始 
	int count=0;   //当前是第几个素数 ,从0开始 
	int pri=2;		//当前素数的大小 

	
	while(count<N){
		if(isPrime(pri)){
			count++;
			if(count>=M) 
				arr[pos++]=pri;
		}
		if(pri==2) pri++;
		else pri+=2;
	}
	
	int f=0;
	for(int i=0;i<pos;i++){
		if(f==0) f++;
		else cout<<" ";
		cout<<arr[i];
		if(i%10==9){
			cout<<endl;
			f=0;
		}
		
	}
		
	return 0;
}
上一篇:寒武纪二面:


下一篇:Codeforces 449C. Jzzhu and Apples