【c++】求n以内素数

【c++】求n以内素数

素数,即质数,除了1和它本身,再不能被其他数整除的数。

求素数需注意两点:

(1) 1既不是质数也不是合数

(2) 2是最小的质数


【代码实例】因刚学习向量容器,所以用向量vector来写的,代码如下:

// vector操作.cpp
//判断n以内的素数(质数)prime
#include<iostream>
#include<vector>

using namespace std;
int main(int argc,char *argv[]) 
{
	vector<int> A(10);  //先定义一个int型向量,初始大小为 10 
	int n; // n以内的素数 
	int prime_count=0;
	cout<<"输入一个数:"<<endl;
	cin>>n;
	// n=1的情况,无素数 
	if(n==1)  
	{
		cout<<"无符合条件的素数"<<endl; 
		return 0;
	}
	// n=2 仅有2这一个素数(2是最小的质数) 
	if(n==2)
	{
		cout<<"2"<<endl;
		return 0; 
	}
	// n>2的情况 
	A[prime_count++]=2; //像访问数组一样,用下标[]访问vector 
	for(int i=3;i<=n;i++) 
	{
		if(prime_count == A.size() ) 
		{
			A.resize(prime_count +10) ;//vector A的容量再加 10 
		} 
		//求素数的核心代码 
		if(i%2==0) continue;  // 大于2的偶数肯定不是质数 
		int j=3;
		while( j<=i/2 && i%j!=0 )   
		{
			j+=2;
		} 
		//判断j跳出上述while原因:
			//若i能被j整除,i肯定不是质数;
			//若i还不能被j整数,且j已大于i/2,则i是质数。 
		if(j >i/2 )  
		{
			A[prime_count++] =i; 
		}
	} 
	
	for(int i=0;i<prime_count;i++)
	 	cout<<A[i]<<" ";
	cout<<endl;
	
	return 0;
}

运行结果:


 -------------------------------------------         END      -------------------------------------

猜你喜欢

转载自blog.csdn.net/u012679707/article/details/80272290