1013. 数素数 (20)

来源:互联网 发布:sql inset 编辑:程序博客网 时间:2024/06/08 03:55

开始自己写的程序第四测试点通不过,看他人的博客得知第四测试点是一个很大的数,需要优化。



1013. 数素数 (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。

输入格式:

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

输出格式:

输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103
自己写的如下:

#include<iostream>#include<cmath>using namespace std;int main(){  int m,n,index=0;  bool flag = false;  cin >> m >> n;  int count = 9;  int *arr = new int[n - m + 1];  for (int j=2; j <= 10000; j++) {    double mm = sqrt(j);    for (int i = 2; i <= mm; i++)    {      if (j%i < 1)      {        flag = true; break;      }          }    if (flag) {      flag = false;       continue;    }    else {      arr[index++] = j;      if (index == n)break;    }  }  for (int i = m-1; i < n-1; i++) {    cout << arr[i];    if (count) {      cout << " ";      count--;    }    else {      cout << endl;      count = 9;    }  }  cout << arr[n - 1];  return 0;}

然后是参考了其他人的:

出处:http://blog.csdn.net/shannonchao/article/details/43569827

#include <iostream>  #include <math.h>  using namespace std;  int isprime(int n)  {      int i;      for(i=2;i<=(int)sqrt((double)n);i++)          if(n%i==0)              return 0;      return 1;  }    int main()  {      int i=2,j=0,n,m,k=0;         cin>>n>>m;        while(true)      {          if(isprime(i))          {              j++;              if(j>=n&&j<m)              {                  k++;                  if(k%10==0)                      cout<<i<<endl;                  else                      cout<<i<<' ';              }              if (j==m)              {                  cout<<i<<endl;                  break;              }          }            i++;      }      return 0;  }  


原创粉丝点击