PTA乙级-1013 数素数 c++

文章目录

  • 题目内容
      • 输入格式:
      • 输出格式:
      • 输入样例:
      • 输出样例:
  • 一、题解要点
  • 二、具体实现
  • 总结

题目内容

令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 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

一、题解要点

  • 用一个一维数组将找到的素数存储起来
  • 在一个for循环里用一个变量控制每行输出几个素数
  • 判断是否为素数的函数里只要找到更号就可以了,不然会超时

二、具体实现

#include
#include
using namespace std; 

int main(){
	int m,n;
	int sushu[10000]={0};//新建存储素数的一维数组 
	int i=1,count=1;//i是待判断的整数,count是记录素数的个数 
	bool seeksushu(int n);//一个判断是否为素数的函数 
	int hangliang=1;//控制每行输出几个数 
	
	cin>>m>>n;
	
	while(count<=n){//只要找n个素数即可,多了会影响程序运行速度 
		do{//这个循环用来寻找素数 
			i++;
		}while(!seeksushu(i));
		sushu[count]=i;//每找到一个就放入数组中 
		count++; 
	}
	

	for(;m<=n;m++){
		if(hangliang==10){//每输出十个数就换行 
			hangliang=1;
			cout<

总结

其实总体的思路还是比较好理解的,就是找到n个素数存入数组中,然后按要求输出。但是在编写代码的过程中我发现输出格式是一个很大的问题。PTA要求的格式非常严格,比如这题,它要求每行输出十个数,前九个后带空格,第十个带回车,最后一个数之后也带回车,而这些全都要在代码中体现出来,这就要求我们观察仔细同时还要熟练掌握各种输出格式,在PTA中最常见的就是按数组格式输出,即除最后一个元素外,其他每个元素之后带空格,掌握这类输出格式可以有效地提高解题速度。

你可能感兴趣的:(PTA乙级刷题,c++,算法)