zoukankan      html  css  js  c++  java
  • PAT Basic 1013 数素数 (20) [数学问题-素数]

    题目

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

    题目分析

    打印从第m个质数到第n个质数之间所有质数,每10个一行

    解题思路

    1. 建立质数表
    2. 打印从第m个质数到第n个质数之间所有质数

    Code

    Code 01

    #include <iostream>
    #include <cmath>
    using namespace std;
    int m,n; 
    bool isPrime(int v) {
    	if(v<=1)return false;
    	int sqr=(int)sqrt(1.0*v);
    	for(int i=2; i<=sqr; i++) {
    		if(v%i==0)return false;
    	}
    	return true;
    }
    int prime_table[1000010];
    bool prime_bool[1000010];//1000010测试点4错误 
    void create_pt() {
    	int index = 1;
    	for(int i=2; i<1000010; i++) {
    		if(prime_bool[i]==false) {
    			prime_table[index++]=i;
    			for(int j=i+i; j<1000010; j+=i) {
    				prime_bool[j]=true;
    			}
    		}
    		if(index>n)break; //节省时间,最大为n,n后面不需要找了, 
    	}
    }
    int main(int argc,char *argv[]) {
    	scanf("%d %d",&m,&n);
    	create_pt();
    	for(int i=1; m+i-1<=n; i++) {
    		if(i%10!=1)printf(" ");
    		printf("%d",prime_table[m+i-1]);
    		if(i%10==0)printf("
    ");
    	}
    	return 0;
    }
    

    Code 02

    #include <iostream>
    #include <vector>
    using namespace std;
    bool isprime(int a) {
    	for (int i = 2; i * i <= a; i++)
    		if(a % i == 0) return false;
    	return true;
    }
    int main() {
    	int M, N, num = 2, cnt = 0;
    	cin >> M >> N;
    	vector<int> v;
    	while (cnt < N) {
    		if (isprime(num)) {
    			cnt++;
    			if (cnt >= M) v.push_back(num);
    		}
    		num++;
    	}
    	cnt = 0;
    	for (int i = 0; i < v.size(); i++) {
    		cnt++;
    		if (cnt % 10 != 1) printf(" ");
    		printf("%d", v[i]);
    		if (cnt % 10 == 0) printf("
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    l1-010
    l1-009
    L1-008修改
    l1-008
    Codeforces Round #406 (Div. 2)
    求N!的长度【数学】 51nod 1058 1130
    51nod 1090 & 1267 【二分简单题】
    Codeforces Round #405 (Div. 2)
    Codeforces Round #404 (Div. 2)
    PAT 天梯赛真题集(L2、L3)
  • 原文地址:https://www.cnblogs.com/houzm/p/12267212.html
Copyright © 2011-2022 走看看