java用\"埃及筛法\"求2到100的素数
时间: 2023-05-04 08:01:40 浏览: 115
题目意思是:使用“埃及筛法”求2到100的素数
使用埃及筛法:先把2到100的整数放入一个集合中,将2标为素数并将其所有的倍数筛掉;然后,将下一个未筛的数3标记为素数,并将其所有的倍数筛掉;依此类推,直到筛完100为止。
所以,2到100的素数为:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97
相关问题
筛法求100以内的素数
筛法求100以内的素数是一种常见的算法,其基本思想是先将2~100的自然数列出来,然后从2开始,将其倍数标记为合数,最后剩下的未被标记的数即为素数。具体实现过程如下:
1.将2~100的自然数赋值给数组a~a[99]。
2.将a赋值为0,因为1不是素数。
3.从2开始,将其倍数标记为0,即合数。
4.输出数组中不为0的数,即为素数。
下面是代码实现:
#include <stdio.h>
#include <math.h>
int main() {
int i,j,k=0,a[100];
for(i=0;i<100;i++) {
a[i]=i+1; //将1~100赋值给a~a[99]
}
a=0; //先把a赋值为0
for(i=0;i<99;i++) {
for(j=i+1;j<100;j++) {
if(a[i]!=0&&a[j]!=0) {
if(a[j]%a[i]==0) {
a[j]=0; //把不是素数的都赋值为0
}
}
}
}
printf("筛选法求出100以内的素数为:\n");
for(i=0;i<100;i++) {
if(a[i]!=0) //选出值不为0的数,即素数
{
printf("%4d",a[i]);
k++;
}
if(k%10==0) //输出10个数后换行
{
printf("\n");
}
}
printf("\n");
return 0;
}
--相关问题--:
1. 筛法求素数的时间复杂度是多少?
2. 除了筛法,还有哪些求素数的算法?
3. 如何判断一个数是否为素数?
用筛法求100以内的素数python
以下是使用筛法求100以内的素数的Python代码:
```python
n = 100
is_prime = [True] * (n+1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(n ** 0.5) + 1):
if is_prime[i]:
for j in range(i*i, n+1, i):
is_prime[j] = False
primes = [i for i in range(n+1) if is_prime[i]]
print(primes)
```
输出结果为:
```
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
```
阅读全文