//根据筛选法求出100以内的所有素数,所谓筛选法是指从小到大筛去一个以知素数的所有倍数,
//例如,根据2我们可筛去4,6,8,...98,100等数.然后根据3可筛去9,15,...99等数(注意此时6,
//12等数早就被筛去了),由于4被筛去了,下一个用于筛选的素数是5...依次类推,最后剩余的就
//是100以内的素数.
/*
*auther starshus
*
*Date 04/11/20
*/
//6.7.4
public class Prime
{
private static final int MAX=100;
public static void init(int[] num)//定义数组,里面装从1到100
{
int i=0;
for(;i<MAX;i++)
{
num[i]=i+1;
}
}
public static int count(int[] num)//在程序运行后,计算素数个数
{
int n=0,i=0;
for(;i<MAX;i++)
{
if(num[i]!=0)//非素数将被置零
n++;
}
return n;
}
public static void printf(int[] num)//输出所有素数,每10个转行一次
{
int i=0,n=0;
for(;i<MAX;i++)
if(num[i]!=0)
{
System.out.print(num[i]+" ");
n++;
if(n%10==0)
System.out.println();
}
}
public static void main(String[] args)//主方法
{
int i=2,j=1;
int count;
int[] numbers = new int[MAX];
init(numbers);
while (j<MAX)
{
if(numbers[j]!=0)
while (i<MAX)
{
if(numbers[i]!=0)
{
if(numbers[i]%numbers[j]==0)
numbers[i]=0;//如果不是素数,置零
}
i++;
}
j++;
i=j+1;
}
count=count(numbers);
printf(numbers);
System.out.println();
System.out.println("ok,we found "+count+"primes in "+MAX+" numbers.");
}
}
分享到:
相关推荐
本节将介绍使用MIPS汇编语言实现筛选法求100以内素数的方法,并与C语言对照,以便读者更好地理解。 MIPS汇编语言基础 MIPS(MIPS Instruction Set)是一种RISC(Reduced Instruction Set Computing)指令集架构,...
用python编写代码找出...prime=[] #用一个列表来存储素数 yes=True print(功能:找出所有小于等于1000的素数) for i in range(2,1000+1): #1不是素数,range“前闭后开” yes=True for j in range(2,i): if i%j==0:
在IT领域,尤其是在编程与算法研究中,素数检测是一个常见的课题。素数,即只能被1和自身整除的大于1的自然数,在数学和计算机科学中具有重要的地位。本篇文章将深入解析如何利用C++语言求解1000以内的所有素数及其...
以下是一个使用筛选法在Java中求解n以内素数的示例代码: ```java public class AratosternyAlgorithm { public static void getPrimes(int n) { if (n || n > 1000000) { throw new IllegalArgumentException(...
求解一定范围内的所有质数是一个经典的算法问题,通常可以通过筛选法(如埃拉托斯特尼筛法)来实现。 ### 汇编代码解析 #### 初始化部分 ```assembly mov si, offset da; 取首地址 mov cx, count - 1; 循环变量 ``...
Matlab课程老师提出的计算素数比赛,在30秒内看谁能用机房里的电脑计算出最多的素数。兴趣使然,自己结合基本的素数定理和筛选法,成功编写这个小程序。目的无他,贴出以供交流和共同进步。
在Python编程语言中,计算小于...总的来说,筛选法是找出素数的一种实用方法,而在Python中实现这一算法可以帮助初学者更好地理解函数、列表操作和算法的运用。不过,对于大量数据的处理,可能需要优化算法以提高效率。
1. **素数定义**:一个大于1的自然数,除了1和它本身外不能被其他自然数整除的数叫做素数(或称质数)。例如2、3、5、7、11等都是素数。 2. **数组使用**:数组是一种线性数据结构,用于存储相同类型的多个元素。本...
我对其进行了革命性的数据结构改进,空间复杂度从2个O(n)降低到1/6个O(n),程序的算法描述更加简洁,改用C++实现,我认为算法效率已经达到了素数算法的极限。 注:创建的内存大小不要超过内存,否则效率下降
求n以内最大的k个素数c可以使用一个简单的算法来查找n以内最大的k个素数。这个算法的基本思想是从大到小遍历每一个数,判断它是否为素数,如果是,就把它加入到结果列表中。当找到k个素数后,就停止遍历。这个程序...
筛选法之所以高效,在于它避免了对每一个数进行素数检验,而是通过标记和排除已知非素数的方法,减少了重复检查的次数。这一点在程序中表现得尤为明显,外层循环只遍历到`sqrt(n)`,使得算法的时间复杂度接近O(n log...
在编程领域,素数是指一个大于1且只有两个正因子(1和自身)的自然数。素数在数学和计算机科学中有着广泛的应用,比如在密码学中的RSA算法。本篇我们将深入探讨如何使用C++语言来显示小于1000000的所有素数。 C++是...
标题中的“qiusushu.rar_求10000 素数_求素数”表明这是一个关于求解素数的C++程序,目标是找出2到10000之间的所有素数。素数是指大于1且仅能被1和自身整除的自然数,如2、3、5、7等。在计算机科学中,素数的求解有...
在这个程序中,采用了两种方法来判断一个数是否为素数: - **排除偶数法**:首先判断是否为偶数,如果是,则直接排除。 - **试除法**:对于非偶数,从3开始逐个测试能否被小于其一半的奇数整除,如果都不能整除,则...
以题目中给出的例子为例,当我们设定n=100,k=5时,我们的程序会寻找100以内最大的5个素数。经过运行,得到的结果是97, 89, 83, 79和73。这些数都是小于100的最大素数,展示了算法的高效性。 此算法的一个显著优点...
在Python中实现素数筛选法,可以通过创建一个布尔列表,初始时假设所有数都是素数(即列表元素值为False,表示未被划掉),然后按上述方法进行筛选。最终,列表中值为False的位置对应的索引即为素数。不过需要注意的...
在这个问题中,我们探讨了一种新型的素数筛选方法,尤其适用于较小的自然数范围内,如10000以内。 首先,我们要了解素数的分类。按照3的倍数,素数可以分为三类:1) 素数3本身,2) 形式为3X+2的素数,以及3) 形式为...
- 可以创建一个二维数组来表示所有可能的配对情况,然后根据已知信息进行筛选。 #### 程序15: 打印菱形图案 - **目标**: 打印出特定格式的菱形图案。 - **程序分析**: - 图案可以分为上下两部分,每部分具有不同...
找出一个范围内的所有素数,经典的算法有试除法、埃拉托斯特尼筛法等。试除法是通过逐个判断每个数能否被它自己的平方根以内的任何自然数整除来确定该数是否为素数。而埃拉托斯特尼筛法则通过构建一个布尔数组标记每...
以下是一个使用筛选法求100以内素数的C语言程序: ```c #include void cal_prime(int A[], int n) { int i, j; for (i = 2; i ; i++) for (j = 2; i * j ; j++) { if (A[i * j] == 1) A[i * j] = 0; else ...