【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 -------------------------------------