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

 

//速度超慢,而且总是扣一分。。改不出来。。
#include <iostream>
#include <cmath>
using namespace std;

int main() 
{
    int a[100000];
    int m,n;
    cin>>m>>n;
    int j=2;
    a[1]=2;
    for (int i=2;i<=100000;i++)
    {
        int flag=0;
        for (int k=1;k<sqrt(i)+1;k++)
        {
            if (i%k==0) {flag++;}
        }
        if (flag==1) {a[j]=i;j++;}
    }
    for (int i=m;i<n;i++)
    {
        if ((i-m+1)%10==0) cout<<a[i]<<endl;
        else cout<<a[i]<<" ";
    }
    if ((n-m+1)%10==0) cout<<a[n]<<endl;
    else cout<<a[n];
	return 0;
}
//法2 已过
#include <iostream>
#include <cmath>
using namespace std;

bool isprime(int n)
{
    if (n==2||n==3) return true;
    else
    {
        for (int i=2;i<=sqrt(n);i++)
        if (n%i==0) {return false;break;}
        return true;
    }
}

int main() 
{
	int m,n;
	cin>>m>>n;
	int t=2,k=1;
	while (true)
	{
	    if (isprime(t))
	    {
	         if (k<m) {k++;t++;} 
	         else if (k==n) {cout<<t;break;}
	         else if (k>m||k<n)
	         {
	             if ((k-m+1)%10==0) {cout<<t<<endl;t++;k++;}
	             else {cout<<t<<" ";t++;k++;}
	         }
	    }
	    else t++;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/doublewhite233/article/details/82392634
今日推荐