空间复杂度O(n),时间复杂度较快的代码(到底多少呢,求解答):(思想:当i是质(素)数的时候,i的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质数的倍数筛掉。)
Python实现:
#输出100以内的素数
data=[]
for i in range(2,101):
data.append(i)
for j in data:
i=j
while i*j<50:
if(i*j in data):
data.remove(i*j)
i=i+1
print(data)
C++实现:
#include<iostream> #include<math.h> using namespace std; #define N 1000001 bool prime[N]; int main() { int i,j; for(i=2;i<N;i++) { if(i%2) prime[i]=true; else prime[i]=false; } for(i=3;i<=sqrt((double)N);i++) { if(prime[i]) for(j=i+i;j<N;j+=i)prime[j]=false; } for(i=2;i<N;i++) if(prime[i]) cout<<i<<" "; system("pause"); return 0; }