精华内容
下载资源
问答
  • #include<iostream> int main() { int prime[101]={0}; for (int i = 2; i<100; i++) { if(prime[i]==0) { for(int j=2;i*j<=100;j++) { prime[i*j]=1; } prime[0]
    #include<iostream>
    int main()
    {
        int prime[101]={0};
        for (int i = 2; i<100; i++)
        {
            if(prime[i]==0)
            {
                for(int j=2;i*j<=100;j++)
                {
                    prime[i*j]=1;
                }
                prime[0]++;
                std::cout<<i<<",";
            }
        } 
        std::cout<<'\n'<<"Total number:"<<prime[0];  
        while(1);
        return 0; 
    }
    

    有不懂的可以给我留言。

    展开全文
  • 7.1用筛法求100以内的素数

    千次阅读 2016-07-10 22:55:24
    输入一个数,判断是否是素数。 #include//输入一个数,判断是否是素数。 int main() { int num,i,PanDuan=0; printf("请输入一个大于1数:"); scanf("%d",&num); fflush(stdin); printf("您输入是:%d\n\n...

    7.1用筛法求100以内的素数。

    输入一个数,判断是否是素数。

    #include<stdio.h>//输入一个数,判断是否是素数。 
    int main()
    {
    	int num,i,PanDuan=0;
    	printf("请输入一个大于1的数:");
    	scanf("%d",&num);
    	fflush(stdin);
    	printf("您输入的是:%d\n\n",num);
    	
    	for(i=2;i<num;i++)
    	{
    		PanDuan=0;
    		if(num%i==0){PanDuan=1;}
    		if(PanDuan==1){break;}
    	}
    	if(PanDuan==0)printf("%d是素数。\n",num);
    	else printf("%d不是素数。\n",num);
    	
    	return 0;
    }

    可以改进为:求100以内所有素数:

    #include<stdio.h>//打印100以内所有素数。 
    int main()
    {
    	int i,j,PanDuan;
    
    	for(i=3;i<=100;i++)
    	{		
    		for(j=2;j<i;j++)
    		{
    			PanDuan=0;
    			if(i%j==0){PanDuan=1;}
    			if(PanDuan==1){break;}
    		}
    		if(PanDuan==0)printf("%d是素数。\n",i);
    	}
    	
    	return 0;
    }

    缺陷是1和2没有打印出来。

    仿照着书上的例子改的:

    #include<stdio.h>//使用数组输出1~100所有的素数 
    int main()
    {
    	int i,j,a[101];
    	
    	for(i=1;i<=100;i++)//对数组赋值 
    	{
    		a[i]=i;
    	}
    	
    	for(i=3;i<=100;i++)//判断部分 
    	{
    		for(j=2;j<i;j++)
    		{
    			if(a[i]%j==0){a[i]=0;break;}
    		}
    	}
    	
    	j=0;
    	for(i=1;i<=100;i++)
    	{
    		if(a[i]!=0)
    		{
    			printf("%4d",a[i]);
    			j++;
    			if(j%10==0)
    			{
    				printf("\n",j);
    			}
    		}
    		
    	}
    	
    	
    	return 0;
    }



    展开全文
  • 用筛法求N以内的素数

    千次阅读 2017-07-11 10:54:07
    用筛法求之N内的素数。 Input N Output 0~N的素数 Sample Input 100 Sample Output 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

    Problem Description

    用筛法求之N内的素数。

    Input

    N

    Output

    0~N的素数

    Sample Input

    100

    Sample Output

    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

    步骤举例:
    详细列出算法如下:

    - 列出2以后的所有序列:
      - 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    - 标出序列中的第一个素数,也就是2,序列变成:
      - 23 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    - 将剩下序列中,划摽2的倍数(用删除线标出),序列变成:
      - 2 34567 891011 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    - 如果现在这个序列中最大数小于最后一个标出的素数的平方,那么剩下的序列中所有的数都是素数,否则回到第二步。
    - 本例中,因为25大于2的平方,我们返回第二步:
    - 剩下的序列中第一个素数是3,将主序列中3的倍数划出(删除线),主序列变成:
      - 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    - 我们得到的素数有:2,3
    - 25仍然大于3的平方,所以我们还要返回第二步:
    - 现在序列中第一个素数是5,同样将序列中5的倍数划出,主序列成了:
      - 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    - 我们得到的素数有:2 3 5 。
    - 因为25等于5的平方,跳出循环.

    结论:去掉划线的数字,2到25之间的素数是:2 3 5 7 11 13 17 19 23。

    #include<iostream>
    using namespace std;

    int main()
    {
        int i,j,n,a[1000];
        cin >> n;
        for(int i = 1;i <= n;i++)
        {
            a[i] = i;           //将1~n储存在数组a[i]中
        }
        for(int i = 2;i < n;i++)
        {
            for(int j = i + 1;j < n;j++)
            {
                if(a[i] != 0 && a[j] != 0)
                {
                    if(a[j]%a[i] == 0)
                        a[j] = 0;//若a[i]不是素数,令a[i]=0;
                }
            }
        }
        for(int i = 1;i < n;i++)
        {
            if(a[i] != 0 && a[i] != 1)
            {
                cout << a[i] << endl;
            }
        }
        return 0;
    }
    展开全文
  • 通过每次对最小数乘以一个递增倍数,找到非负数,然后将其剔除。

    用筛法求100以内的全部素数,并按每行五个数显示

    基本思路

    ① 将布尔类型的空数组全置为true,表示每个数组的数还未被剔除
    ② 1不是素数,被剔除,故置为false
    ③ 数组大小101,且下标与自然数2到100依依对应
    ④ 每次都已最小数为基准,然后不断递增乘其倍数(两倍、三倍、四倍……),找出以该基准数为因数的非素数,并且置为false,表示剔除。等循环至n的平方根处便停止,从而找到所有素数

    代码如下

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    const int n = 100;
    int t;
    bool a[n + 1];
    
    int main() {
    	//数组全赋值为1,表示该下标上的数存在 
    	for (int i = 0; i <= n; i++) {
    		a[i] = true;
    	}
    	a[1] = false;
    	//从2开始,不断摘出其倍数的下标,将其赋值为0,以示非素数被摘除 
    	for (int i = 2; i <= sqrt(n); i++) {
    		if (a[i]) {
    			for (int j = 2; j <= n / i; j++) {
    				a[i * j] = false;
    			}
    		} 
    	}
    	
    	t = 0; 
    	for (int i = 2; i <= n; i++) {
    		if (a[i]) {
    			cout << setw(5) << i;
    			t++;
    			if (t % 5 == 0) {
    				cout << endl;
    			}
    		} 
    	}
    	
    	return 0;
    }
    

    运行结果

    在这里插入图片描述

    展开全文
  • 筛选法就是“埃拉托色尼筛法”,方法是在纸上写出1~1000全部整数,然后逐个判断他们是否为素数,挖掉非素数,剩下就是素数。 算法思想: 1、挖掉1 2、下一个未被挖掉数p除p后面各数,把p倍数挖掉 3、检查p...
  • 埃氏筛法求2~100以内的素数

    千次阅读 2019-03-10 23:05:09
    “埃氏筛法2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。 要求使用数组及增强的for语句。 先科普下埃氏筛法相关知识 埃拉托斯特尼...
  • 筛选法求100以内的素数

    千次阅读 2012-12-05 09:41:43
    筛选法求100以内的素数 所谓“筛选法”指的是“埃拉托色尼(Eratosthenes)筛法”。他是古希腊的著名数学家。他采取的方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它...
  • 用筛法求100素数

    2019-12-18 22:00:26
    //筛选法求100以内的素数 #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[0]~a[99] } a[0]=0; //先把a...
  • //筛选法就是“埃拉托色尼筛法” //就是将非素数“挖掉”,只剩下素数,所谓挖掉就是把非素数归为0,之后 进行判断即可 //1:先输入数组元素 //2:先把a[1]等于0; //3:i从2开始,可以小于100,也可以根号下(100)...
  • 【C语言】 利用筛选法求100以内的素数

    万次阅读 多人点赞 2018-10-27 09:41:29
    //C语言 筛选法求100以内的素数 //原理很简单,就是当i是质(素)数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质 //数的倍数掉。 //我们将从2开始 2除后面的数...
  • “埃氏筛法2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。 请上传压缩后的源代码文件,代码可直接并正确运行; 请注意代码风格:...
  • 今天要解决的问题是:“埃氏筛法2~100以内的素数。素数有许许多多的法,探索素数快速算法也成为程序猿们孜孜不倦的追求,今天的“埃氏筛法”不算是最快的一种,却也有其巧妙的地方。 二、“埃氏筛法”的...
  • “埃氏筛法2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。 要求使用数组及增强的for语句。 提示:可以使用一个boolean类型的数组,...
  • “埃氏筛法2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。 要求使用数组及增强的for语句。 提示:可以使用一个boolean类型的数组,...
  • 筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除数都划去。2后面第一个没划去数是3,把3留下,再把3后面所有能被3...
  • java求100以内的素数

    千次阅读 2014-03-22 15:26:02
    * 某知名公司面试题:利用筛选法求100以内的素数? * (所谓的筛选法:是指从小到大去已知的一个素数的所有倍数,根据2我们可以去“4,6,8,...,100”等数, * 然后根据3可以去“9,15,...,99”等数,注意此时...
  • 题目 1084: 用筛法求之N内的素数 时间限制: 1Sec 内存限制: 64MB 题目描述 用筛法求之N内的素数。 输入 N 输出 0~N的素数 样例输入 100 样例输出 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 ...
  •  * “埃氏筛法2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。  * @author 97699  *  */ public class Test {  public static ...
  • “埃氏筛法2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。 要求使用数组及增强的for语句。 package bei; import java.util....
  • 淦 最近在学数组 正好学到了数组的排序方法 然后 老高讲完了冒泡算法和穷举算法(我愿称之为懒鬼算法)之后,双手一摊,露出了邪魅一笑,对我们讲:(我的脑补剧场) ...用筛法求100以内的素数 问题...
  • 筛选法求1到100以内的素数

    千次阅读 2016-01-18 21:20:42
    所谓“筛选法”指是“埃拉托色尼(Eratosthenes)筛法”。他是古希腊著名数学家。他采取方法是,在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数,找出一个非素数,就把它挖掉,最后剩下就是素数。...
  • 需求:“埃氏筛法2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。(JAVA语言编写) 埃氏筛选:要得到自然数n以内的全部素数,必须...
  • java经典算法(一)求100以内的素数

    万次阅读 2017-07-21 15:46:29
     所谓筛选:是指从小到大去已知一个素数的所有倍数,根据2我们可以去“4,6,8,...,100”等数,然后根据3可以去“9,15,...,99”等数,注意此时6,12早就被作为2倍数给去了,由于4已经被去了,所以...
  • 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61) 和 (71, 73),总计有 8 组。 但是随着数字的增大,孪生素数的分布变得越来越稀疏,寻找孪生素数也变得越来越...

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

用筛法求100以内的素数