问题 3929 --质数(prime.cpp)

3929: 质数(prime.cpp)★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 562  解决: 404
[提交][状态][命题人:]

题目描述

输入一个10000以内的正整数x,判断该数是否为质数。

如果不是质数,输出-1,否则输出x在10000以内的所有质数中的排名。

比如,x=7时,小于等于7的质数有2,3,5,7,排在第4。

#include<bits/stdc++.h>
using namespace std;
int x,c=0,L,R,Mid,a[1500];
bool flag[10010];
void prime()
{
	for(int i=2;i<=10000;i++)
	{
		if(____(1)____)
		{
			c++;
			a[c]=i;
			for(int j=i+i;j<=10000;____(2)____)
			flag[j]=false;
		}
	}
}
int main()
{
    cin>>x;
    for(int i=2;i<=10000;i++) flag[i]=true;
    prime();
    if(____(3)_____) cout<<-1; 
    else
    {
    	L=1;
    	_____(4)______
    	while(L<=R)
    	{
    		_____(5)_____
    		if(a[Mid]==x) break;
    		else if(a[Mid]>x) R=Mid-1;
    		else L=Mid+1;
    	}
    	cout<<Mid;
    }
    return 0;
}

输入

输入文件为prime.in

一个正整数x

输出

输出文件为prime.out

x不是质数的话,输出-1;否则输出x在10000以内的所有质数中的排名。

样例输入
Copy
7
样例输出
Copy
4

提示

来源

[提交][状态]