C/C++中的素数筛选
2016-09-03 10:52
309 查看
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
判断101-200之间有多少个素数,并输出所有素数。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。
质数大于等于2不能被它本身和1以外的数整除
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Program
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const long long size=100000;//修改size的数值以改变最终输出的大小
long long zhishu[size/2];
void work(){//主要程序
zhishu[1]=2;
long long k=2;
for(long long i=3;i<=size;i++){//枚举每个数
bool ok=1;
for(long long j=1;j<k;j++){//枚举已经得到的质数
if(i%zhishu[j]==0){
ok=!ok;
break;
}
}
if(ok){
zhishu[k]=i;
cout<<"count"<<k<<' '<<i<<endl;
k++;
}
}
}
int main(){
freopen("zhishu.out","w",stdout);
cout<<"count1 2"<<endl;
work();
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool isPrime(unsigned long n) {
if (n <= 3) {
return n > 1;
} else if (n % 2 == 0 || n % 3 == 0) {
return false;
} else {
for (unsigned short i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~
Examination
Problem
质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。判断101-200之间有多少个素数,并输出所有素数。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Analysis
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。
质数大于等于2不能被它本身和1以外的数整除
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const long long size=100000;//修改size的数值以改变最终输出的大小
long long zhishu[size/2];
void work(){//主要程序
zhishu[1]=2;
long long k=2;
for(long long i=3;i<=size;i++){//枚举每个数
bool ok=1;
for(long long j=1;j<k;j++){//枚举已经得到的质数
if(i%zhishu[j]==0){
ok=!ok;
break;
}
}
if(ok){
zhishu[k]=i;
cout<<"count"<<k<<' '<<i<<endl;
k++;
}
}
}
int main(){
freopen("zhishu.out","w",stdout);
cout<<"count1 2"<<endl;
work();
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool isPrime(unsigned long n) {
if (n <= 3) {
return n > 1;
} else if (n % 2 == 0 || n % 3 == 0) {
return false;
} else {
for (unsigned short i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
}
相关文章推荐
- C++素数筛选法
- C/C++筛选法算素数
- Python和C++求10000以内的所有素数(Eratosthenes筛选 求素数)
- C++筛选法求素数(简单)
- C/C++利用筛选法算素数的方法示例
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 筛选法查找1000以内的素数c++代码实例及运行结果
- PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 筛选法查找1000以内的素数c++代码实例及运行结果
- C/C++编程小练习 计算10亿之内的素数和(合数筛选算法实现)
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 筛选法查找1000以内的素数c++代码实例及运行结果
- 1928 Prime Distance 素数筛选法 ,筛选一段区间的素数
- Prime Palindromes( 素数回文) C++实现