前n个素数 && 小于等于n的素数_legend
来源:互联网 发布:淘宝手机收藏地址转换 编辑:程序博客网 时间:2024/05/17 07:09
#include <iostream>
#include<math.h>
#include<stdio.h>
using namespace std;
/*取得前n个素数*/
void get_primes(int *primeArray,int n){
primeArray[0]=2;
primeArray[1]=3;
int count=1;
int i;
int j;
for(i=3;count<n;i+=2){
int sqrt_i=sqrt(i);
for( j=1;primeArray[j]<=sqrt_i && i%primeArray[j]!=0; j++);
if(primeArray[j]>sqrt_i){
primeArray[count]=i;
count++;
}
}
}
/*输出前n个素数*/
void display(int* array,int length){
for(int i=0;i<length;i++){
if(i!=0&&i%8==0){
cout<<endl;
}
printf("% 4d",array[i]);
}
}
/*初始化筛选数组
除了2以外的偶数不可能是素数,所以为false。
*/
void initArray(bool * array,int length){
int i;
for( i=2;i<length;i+=2){
array[i]=false;
array[i-1]=true;
}
if(i==length){
array[length-1]=true;
}
array[2]=true;
}
/*输出小于等于n的素数。*/
void primesLessThanN(bool* primeArray,int n){
int length=n+1;
initArray(primeArray,length);
int sqrt_n=sqrt(n);
/*获取已知每个素数,然后将
每个素数的奇数倍设置为合数,即元素值为false.
(因为偶数倍在初始化的时候已经设置为false 了。)
*/
for(int prime=3;prime<=sqrt_n;prime+=2){
if(primeArray[prime]==true){
for(int j=3*prime;j<n;j+=2*prime)
{
primeArray[j]=false;
}
}
}
}
/*输出每个素数,元素值为true的元素的下标就是素数。*/
void displayPrimesLessThanN(bool* primesArray,int length){
cout<<" "<<2;
int count=1;
for(int i=3;i<length;i+=2){
if(primesArray[i]==true)
{
if(count%8==0){
cout<<endl;
}
printf("% 4d",i);
count++;
}
}
}
int main()
{
cout<<"get the former n primes "<<endl;
int n=101;
int * primeArray=new int[n];
get_primes(primeArray,n);
display(primeArray,n);
cout<<endl<<"get the primes less than N"<<endl;
bool* primesArray=new bool[n+1];
primesLessThanN(primesArray,n);
displayPrimesLessThanN(primesArray,n+1);
cout << endl<<"Hello world!" << endl;
return 0;
}
- 前n个素数 && 小于等于n的素数_legend
- 小于n的素数
- 求前n个素数的和
- 前n个素数的乘积表
- 打印前N个素数
- 求前n个素数
- 打印前N个素数
- 找出前N个素数
- 输出所有小于等于n(n为一个大于2的正整数)的素数
- 输入任意一个大于2的正整数n,输出所有小于等于n的素数
- 使用Eratosthenes筛找出小于等于n的所有素数的C语言实现
- 小于等于n的素数的个数(埃式筛选法和欧拉筛选)
- 查找小于N的所有素数
- 快速求小于N的所有素数
- poj2407小于n的相对素数
- 求前n个素数之和
- 第n个素数
- 求小于n的所有素数,按照每行10个显示出来
- 网传3艘战略核潜艇齐聚三亚 汉和称值得关注
- IOS学习之UINavigationController详解与使用(二)页面切换和segmentedController
- stm32adc多通道数据采集
- sql2005 Microsoft SQL Server Management Studio Express的安装问题
- Linux文件共享(二)——两个独立进程打开同一个文件
- 前n个素数 && 小于等于n的素数_legend
- 黑马程序员_java高新(一)
- 设计模式系列课程22之【迭代器模式】
- 取石子(八)
- Linux文件共享(一)——进程与打开文件
- SSH整合,SPRING注入失败解决方案
- 2014百度之星预赛1004 Labyrinth
- 指针的理解
- OCP-1Z0-051 第174题 事务的组成