C语言编程 实现用于计算素数的算法。假定我们要找出小于10的所有素数,其中共有2

来源:百度知道 编辑:UC知道 时间:2024/07/16 15:32:29

给你个高效的,即第一轮删除2的倍数,第二轮删除3的倍数。。。直到删除到根号n为止,剩下的全是素数,这是效率最高的了,算一百万以内的素数都不足一秒
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>

int main()
{
int n;
scanf("%d",&n);
if(n<2) return 0;
int *a=(int *) malloc ( n*sizeof(int) );
for(int i=2; i<n; i++)
a[i]=i;
int k=(int)sqrt (float(n) );
int t=2;
while(a[t] <=k) {
if(a[t] == 0) {
t++;
continue;
}
int p=a[t]*a[t];
for(int i=t; i<n; i++){
if(i == p) {
a[i]=0;
p +=a[t];
}
}
t++;
}
for(int i=2; i<n; i++)
if(a[i] != 0) printf("%d ",a[i]);
free (a);
return 0;
}

#include <iostream>
using namespace std;
int main()
{
int i,num=0,Number=10;
for(i = 2; i*i <= Number; ++i)
if(Number % i != 0)