笔试题:求第M个到第N个素数之间所有素数

题目描述

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

#include <iostream>
using namespace std;
int main()
{
    int M;
    int N;
    cin >> M >> N;
    int *Snum = new int[11000];
    int k = 0;
    int i;
    int j;
    Snum[k++] = 2;
    for (i = 3; i <= 110000; i++)
    {
        for (j = 0; j*j < k; j++)
        {
            if (i%Snum[j] == 0)break;
        }
        if (j*j >= k)
        {
            Snum[k++] = i;
        }
    }
    int count = 0;
    for (i = M-1; i < N; i++)
    {
        count++;
        if (count % 10 == 0)
        {
            cout <<Snum[i]<<endl;
            continue;
        }
        if (i == N - 1)
        {
            cout << Snum[i] << endl;
            break;
        }
        cout << Snum[i] << " ";
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 14:12:39

笔试题:求第M个到第N个素数之间所有素数的相关文章

[2013百度软件研发笔试题] 求字符串中连续出现同样字符的最大值

题目完整描写叙述为:用递归的方式实现一个求字符串中连续出现同样字符的最大值.如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 下面是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\

[2013百度软件研发笔试题] 求字符串中连续出现相同字符的最大值

题目完整描述为:用递归的方式实现一个求字符串中连续出现相同字符的最大值,如aaabbcc,连续出现a的最大值为3,abbc,连续出现字符最大的值为2. 以下是我想出来的方法: #include <iostream> using namespace std; #define MAX(a, b) (a) > (b) ? (a) : (b) int Get(char *s, int n, int m)  //字符指针, 当前最长串, max最长串 {     if(*(s+1) == '\0'

阿里巴巴笔试题求最小三元组距离

已知三个升序整数数组a[l], b[m]和c[n].请在三个数组中各找一个元素,是的组成的三元组距离最小.三元组的距离定义是:假设a[i].b[j]和c[k]是一个三元组,那么距离为: Distance = max(|a[ I ] – b[ j ]|, |a[ I ] – c[ k ]|, |b[ j ] – c[ k ]|) 请设计一个求最小三元组距离的最优算法,并分析时间复杂度. #include<iostream> using namespace std; int Max(int a,i

[算法]滴滴笔试题——求最大子串和(O(n)复杂度)

扫描法.一次扫描数组即可得出答案,复杂度O(n).这种方法用文字描述不容易说清楚,下面用每一步运算的图示来表达.伪代码如下: maxsofar=end=0; for i=[0,n) end=max(end+x[i],0) maxsofar=max(maxsofar,end) 即使后面没有这样的值了,maxsofar中还保存了原来的最大和,有恃无恐.这里的一条重要原则是目前end的值必须>0,如果<0,则不用考虑,立刻放弃end目前的值,将它置为0,并且把end的指针指向58. 以此类推下去,最

笔试题: 不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数

笔试题: 不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数. 函数接口声明如下:int my_strlen(const char *p); strlen函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符'\0'. 而返回的长度大小不包括'\0'. #include <stdio.h> #include <assert.h> //使用中间变量 //int my_strlen(const  char *str) //{ //   ass

腾讯web前端开发工程师笔试题及答案

1. 如何实现事件委托? 首先要知道什么是事件委托. 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少遇到这么多li的情况),为每个li添加事件侦听就会对页面性能产生很大的影响. 就像下面这段代码: <!DOCTYPE HTML><html><head><meta charset="utf-8" /><ti

2017CVTE笔试题

下面是凭记忆整理的2017CVTE校招笔试题,基本上全都是我不会或很模糊的题,为了更好突出重点我以问答题的形式来描述题目. 1. 中序遍历是属于层次遍历.广度优先遍历.深度优先遍历中的哪一种? 答:层次遍历是指一层一层的遍历树中的节点,广度优先遍历是指遍历完它所有的兄弟节点后再开始遍历其孩子节点,因此层次遍历也属于广度优先遍历.深度优先遍历就是顺着节点的孩子节点一直往下搜索,直到没有孩子节点时才开始搜索叶子节点,常见的前序遍历.中序遍历.后序遍历就是属于深度优先遍历. 2. 产生死锁的4个条件,

搜狗2015C++工程师笔试题解题分析

试卷链接:搜狗2015 C++工程师笔试题. 1.假设整数0x12345678 存放在内存地址0x0开始的连续四个字节中 (即地址0x0到 0x3). 那么在以Little Endian字节序存储的memory中,地址0x3的地方存放的字节是: 0x12 0x34 0x56 0x78 分析:选D.小端法和大端法. a) Little-Endian就是低位字节排放在内存的低地址端, 高位字节排放在内存的高地址端. b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地

Java开发工程师上机笔试题

网上看到3道比较好的Java开发工程师上机笔试题,没有答案这里把答案写出来,给大家参考. 1.编一个程序,输入10个整数,并放在数组中,先降序输出所有的数,再统计并输出其中正数.负数和零的个数 package cn.Pigzhu.test; import java.util.Scanner; /**  * 控制台输入10个数字,并输入正负和零的个数  * @author xiaoyezhu  *  */ public class test { public static void main(St