zoukankan      html  css  js  c++  java
  • 打表找素数

    打表找素数

    打表是典型的空间换时间的思想,尤其是需要用到判断素数的情形下,如果事先有一张素数表可以直接查找该数是否为素数,而不是到需要判断某一个数是否是素数时再去运行时判断,时间上会节省许多。

    看了《算法笔记》如今自己写一下素数打表的算法:

       	#include <iostream>
    	using namespace std;
    	#define maxn 100001//对0 ~ 100001的数进行打表
    	bool vis[maxn];//用来记录该数是否被访问过,访问过了肯定不是素数,初始化是false
    	bool isprime[maxn];//isprime[i] = true则i是素数,初始化是false
    	void pt_init()
    	{
    		for(int i = 2;i < maxn;i++)	
    		{
    			if(!vis[i])//若没访问过,i肯定是素数
    			{
    				isprime[i] = true;//记录该素数
                    //比x大i的数肯定不是素数
    				int x = i;
    				while(x <= maxn)
    				{
    					vis[x] = true;
    					x += i;
    				}
    			}
    		}
    	}
    	int main()
    	{
    		pt_init();//素数打表
    		
    		return 0;
    	}
    
  • 相关阅读:
    Ubuntu18.04 Hadoop Standalone
    Shiro安全框架
    链表中环的的入口节点
    二维数组中的查找
    ElasticSearch快速入门
    logback日志配置
    RabbitMQ进阶笔记
    RabbitMQ入门笔记
    JUC-Lock锁及常用工具类
    Java中的线程池
  • 原文地址:https://www.cnblogs.com/Codroc/p/12348857.html
Copyright © 2011-2022 走看看