精华内容
下载资源
问答
  • 用筛选法求100之内的素数
    2019-08-25 10:48:14

    所谓筛选法,指的是"埃拉托色尼筛法",采取的方法是,在一张纸上写上1-100 全部的整数
    然后逐个判断他们是否为素数,找出一个非素数,就把他挖掉,最后剩下的就是素数
    具体做法如下所示:
    先把1挖掉,因为1不是素数
    用2除它后面的各个数,能把2整除的数挖掉,即就是把2的倍数挖掉
    用3除它后面的各个数,把3的倍数全部挖掉
    分别用4,5,各数作为除数除这些数后面的各个数。这个过程一直进行到在除数后面的数已经全部被挖掉为止
    事实上可以简化,如果需要找到1~n范围内的素数表,只需要进行到除数为根号下n(取其整数即可以)
    例如对1~50,只需进行到将7作为除数即可

    用计算机解此题,可以定义一个数组,a[1]a[n]分别代表这1n个数
    如果检查出数组a的某一个元素的值是非素数,就使得它变为0,最后剩下的不为0的就是素数

    #include<stdio.h>
    #include<math.h>
    int main()
    {
    	int i, j, a[101] ,n ;
    	for (i = 1; i <= 100; i++)
    		a[i] = i;//使得a[1]~a[100]的值为1~100
    	a[1] = 0;//先挖掉a[1]
    	for (i = 2; i < sqrt(100); i++)
    		for (j = i + 1; j <= 100; j++)
    		{
    			if (a[i]!= 0 && a[j] != 0)
    				if (a[j] % a[i] == 0)//可以整除,不是素数,挖掉
    					a[j] = 0;
    		}
    	printf("\n");
    	for (i = 2, n = 0; i <= 100; i++)
    	{
    		if (a[i] != 0)
    		{
    			printf("%5d ", a[i]);
    			n++;
    		}
    		if (n == 10)
    		{
    			printf("\n");
    			n = 0;
    		}
    	}
    	printf("\n");
    	return 0;
    }
    
    更多相关内容
  • 用筛选法求100以内素数

    万次阅读 多人点赞 2019-01-19 18:23:18
    用筛选法求100以内素数 所谓筛选法是指埃拉托色尼筛选。埃拉托色尼是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到1000的全部整数,然后逐个判断他们是否素数,找出一个非素数,就把他们挖掉,最后剩下...

    用筛选法求100以内的素数

    所谓筛选法是指埃拉托色尼筛选。埃拉托色尼是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到1000的全部整数,然后逐个判断他们是否素数,找出一个非素数,就把他们挖掉,最后剩下的就是素数。
    用算法可以表示如下:
    (1)先将1挖去。
    (2)用2去除他后面的各个数,把能被2整出的数挖掉,即把2的倍数挖掉。
    (3)n=3,4,…,100/2,重复2步骤直到所求数的一半即可。(若简化,可求到所求数的平方根即可)
    (4)剩下的即是素数。

    代码如下:

    #include<stdio.h>
    int main()
    {
    	int a[100],j;                                                  
    	for(j=1;j<=100;j++)
    	a[j]=j;
    	for(int i=2;i<=100/2;i++)
    	for(j=2;j<=100;j++){
    		if(j%i==0&&a[j]!=0&&j!=i)//判断是否为质数,满足不为质数,删去 
    		a[j]=0;
    	}
    	printf("100以内的素数为:\n");
    	for(j=2;j<=100;j++)
    	if(a[j]!=0)
    	printf("%d ",a[j]);
     } 
    

    在这里插入图片描述

    展开全文
  • 所谓筛选法是指“Eratosthenes筛法”,采用的方法就像拿一个“筛子”不断地筛掉一组数中非素数的数,那么剩下的就都是素数了,具体做法如下: 从1开始,先将1筛掉。(1是特殊的非素数,直接去掉即可,具体的素数...

    所谓筛选法是指“Eratosthenes筛法”,采用的方法就像拿一个“筛子”不断地筛掉一组数中非素数的数,那么剩下的就都是素数了,具体做法如下:

    从1开始,先将1筛掉。(1是特殊的非素数,直接去掉即可,具体的素数定义可以参考维基百科)

    然后从2开始,2是素数,2的整数倍都不是素数,都筛去。

    然后3也同理,而4则是2的两倍,已经被筛去就跳过,所以下一个是5。

    一直到99为止。(实际上只需要筛选到\sqrt{n}为止即可,因为\sqrt{n}\cdot \sqrt{n}<=n,已经可以筛选到n项了)

    下面我们看代码

    #include<stdio.h>
    #include<math.h>
    int is_prime(int x)//判断素数函数
    {
    	int k = 0;
    	for (k = 2; k < sqrt(x); k++)
    	{
    		if (x % k == 0)
    			return 0;
    	}
    	return 1;
    }
    
    void print_prime_number()
    {
    	int i = 0;
    	int arr[100] = { 0 };//arr[i]中放的为0表示是素数,为1表示是非素数
    	for (i = 2; i < 100; i++)//从2到100判断下去,是素数就把它的j倍都筛去,标记为非素数;非素数的跳过
    	{
    		if (arr[i] == 1)//如果已经被标记为非素数就不用进行下去了
    			continue;
    			if (is_prime(i) == 1)
    			{
    				int j = 1;
    				for (j = 2; i*j < 100; j++)
    				{
    					arr[i * j] = 1;//把是素数的那个数的n倍数都筛去
    				}
    			}
    	}
    
    	for (i = 2; i < 100; i++)//打印素数,打印下标即可
    		if (arr[i] == 0)
    			printf("%d ", i);
    }
    int main()
    {
    	print_prime_number();
    	return 0;
    }

    实际上,可以将i的变化从(2到99)优化为(2到9)。

    void print_prime_number()
    {
    	int i = 0;
    	int arr[100] = { 0 };
    	for (i = 2; i < 10; i++)
    	{
    		if (arr[i] == 1)//如果已经被标记为不是素数就不用进行下去了
    			continue;
    			if (is_prime(i) == 1)
    			{
    				int j = 1;
    				for (j = 2; i*j < 100; j++)
    				{
    					arr[i * j] = 1;//把是素数的那个数的n倍数都筛去
    				}
    			}
    	}
    
    	for (i = 2; i < 100; i++)//打印素数
    		if (arr[i] == 0)
    			printf("%d ", i);
    }

     

     

    展开全文
  • 【C语言】 利用筛选法求100以内素数

    万次阅读 多人点赞 2018-10-27 09:41:29
    //C语言 筛选法求100以内素数 //原理很简单,就是当i是质(素)数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质 //数的倍数筛掉。 //我们将从2开始 2除后面的数...

    算法思路:

    原理很简单,就是当i是质(素)数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质数的倍数筛掉。

    代码如下:

    //C语言 筛选法求100以内的素数
    //原理很简单,就是当i是质(素)数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质
    //数的倍数筛掉。
    //我们将从2开始 用2除后面的数,如果后面的数能被2整除 那么那个数一定不是素数
    #define N 100 
    #include "stdio.h"
    int main(){
    	int i,j;
    	int arr[N];
    
    	for(i = 0;i<N;i++){//对数组赋值  1-100
    		arr[i]=i+1;
    	}
    	arr[0] = 0;//1不是素数,所以将下标0 的元素设置为0
    	
    	//进行素数判断:我们将从2开始 用2除后面的数,如果后面的数能被2整除 那么那个数一定不是素数,将那个数置为零
    	for(i = 1;i < N-1;i++){
    		for(j = i+1;j < N;j++){
    			if(arr[i] != 0 && arr[j] != 0)//如果进行到3的时候2后面一定有数被置为0了,这里我们需要判断一下是不是有0
    			if(arr[j] % arr[i] == 0){
    				arr[j] = 0;
    			}
    		}
    	}
    	//循环输出
    	for(i = 0;i<N;i++){
    		if(arr[i] != 0)
    			printf("%d\n",arr[i]);
    		
    	}
    
    return 0;
    }

    结果如下:

     

     

     

    展开全文
  • 主要介绍了java使用筛选法求n以内素数示例(java求素数),需要的朋友可以参考下
  • 什么是筛选法 所谓筛选法是指“埃拉托色尼筛法”,埃拉托色尼是古希腊的著名数学家。它采用的方法是,在一张纸上写上1~1000的全部整数,然后逐个判断他们是否为素数,只要找到一个非素数就把他去掉,最后剩下的数就...
  • 用筛选法求100之内素数(C语言 数组)

    万次阅读 多人点赞 2018-05-21 11:28:28
    1.解释下什么是筛选法? 筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3...
  • 使用筛选法来确定100以内素数并将其输出 使用时请在dev运行
  • //用筛选法求100内素数质数别名素数,指除了1和本身外无其他因数的自然数 #include<stdio.h> #include<math.h> int main() { int i,j,n,a[101]; for(i=1;i<=100;i++) //a[0]不用 { a[i...
  • 用筛选法求100以内的的素数

    千次阅读 2020-02-20 11:42:59
    用筛选法求100以内的的素数 1.算法介绍 筛选法是指埃拉托色尼(Eratosthenes)筛选,埃拉托色尼是古希腊的著名数学家。他采取的方法是,先写下1到1000的全部整数,然后逐个判断它们是否素数,找出一个非素数,就把...
  • C语言 用筛选法求100之内素数

    千次阅读 2020-05-08 09:13:47
    #include<stdio.h>... int a[100],i,j,k=0; for(i=0;i<100;i++) a[i]=i+1; for(i=1;i<100;i++) { for(j=i+1;j<100;j++) if(a[i]!=0&&a[j]!=0) { if(a[j]%a[i]==0) ...
  • 编写C语言程序,利用筛选法求100之内素数,程序如下: #include<stdio.h> int main() { int i,j,a[101]; for(i=0;i<=100;i++) { a[i]=i; } for(i=2;i<=10;i++) { for(j=i+1;j<=100;j++) { if(a[j]%...
  • /*用筛选法求给出范围之内素数。*/#include #include int isPrime(int n){//判断素数for(int i = 2; i < n; i ++){if(n % i == 0)return 0;}return 1;}int* allPrime(int scale){//这个函数要存储下来给定范围...
  • MIPS汇编下用筛选法求100以内素数,有C语言对照,工具的话,spim模拟器。
  • //筛选法就是“埃拉托色尼筛法” //就是将非素数“挖掉”,只剩下素数,所谓挖掉就是把非素数归为0,之后 进行判断即可 //1:先输入数组元素 //2:先把a[1]等于0; //3:i从2开始,可以小于100,也可以根号下(100)...
  • 下一个没有被挖掉的数p去除p后面的各数,把p的倍数挖掉 检查p是否小于 sqrt( n )的整数部分(n = 1000,则检查p < 31是否成立),如果成立,则返回 第二步 继续执行。否则结束。 剩下的数就是素数,输出即可。 ...
  • 题目:用筛选法求100之内素数。 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj 一、解题思路 思路: //1.素数是什么:素数就是除了1和本身没有其他因子的数。 //2....
  • 用筛选法求100之内素数 首先我们来看一下什么是素数素数又称质数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除; 介绍一下筛选法筛选法所谓"筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”...
  • 用筛选法求100之内素数

    万次阅读 多人点赞 2018-01-26 16:05:21
    法求素数的基本思想是:把从1开始的、某一范围的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。 如有: 1 2 3 4 5 6...
  • 用筛选法求100之内素数——C语言

    千次阅读 2019-07-21 21:38:03
    1 筛选法 首先必须解释一下什么是筛选法筛选法其实是把我们不需要的数给筛出掉! 本题具体做法如下: 先把N个自然数按次序排列起来,本题中直接采用数据即可; 1不是素数质数),也不是合数,筛去; 第二个数2...
  • 用筛选法求100以内素数问题

    千次阅读 2014-04-11 10:16:33
    #include #include int main() { int i,j,n,a[101]; for(i=1;i<=100;i++)/*a[0]不用,只用a[1]到a[100]*/ a[i]=i; a[1]=0;/*先挖掉a[1]*/ for(i=2;i(100);i++) if(a[i]!=0)
  • 1.首先解释下什么是筛选法筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,...
  • 使用筛选法求100以内素数筛选法介绍先把N个自然数按次序排列起来。 1不是质数,也不是合数,划去。 第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,201
精华内容 2,080
热门标签
关键字:

用筛选法求100之内的素数

友情链接: booksale.rar