(质因子打表记录素数的位置)HDU Largest prime factor

news/2024/8/26 6:08:19

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=2136

利用素数打表的筛选法

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;



int a[1000000];
int main(){

   int ans,k=0;
   memset(a,0,sizeof(a));
   for(int i=2;i<1000000;i++)
    {
       if(a[i]==0){
       k++; //用k标记素数在表中的位置
    for(int j=i;j<1000000;j+=i){
       a[j]=k;}

   }
   }
    while(~scanf("%d",&ans))//题目没有给结束尾,切记要用~符号或者EOF
    {
        cout<<a[ans]<<endl; //把素数的位置打印出来
    }
    return 0 ;
   }


 

下面是质因子打表的常规方法

void init_prime()
{
    int i, j;
    for(i = 2;i <= sqrt(1000002.0); ++i)//sqrt内为质因子
    {
        if(!prime[i])
            for(j = i * i; j < 1000002; j += i)
                prime[j] = 1;
    }
    j = 0;
    for(i = 2;i <= 1000002; ++i)
        if(!prime[i])
            prime[j++] = i;
}

把质数全部存在prime数组中 从0开始

void set()
{   
    l=0;
    int i,j;
    memset(prime,0,sizeof(prime));
    for(i = 2; i<N; i++)
    {
        if(prime[i])
            continue;
        for(j = i+i; j<N; j+=i)
            prime[j] = 1;
        s[l++] = i;
    }
}

素数表的构建:

bool isPrime(int k)
{
    for (int i = 0; i < count; i++) {
        if (k % prime[i] == 0) {
            return false;
        }
    }
    return true;
}

int main()
{
    //开始构建素数表
    for (int i = 2; i <= 10000; i++) {
        if (isPrime(i)) {
            prime[count] = i;
            count++;
        }
    }


转载于:https://www.cnblogs.com/zhangmingzhao/p/7256465.html


http://www.niftyadmin.cn/n/3095315.html

相关文章

esxi6.7装windows10

出现上图&#xff0c;就回车 按F2 OK

centos安装PXE(无人值守安装)服务器

我是用http协议传送安装源给客户机&#xff08;我服务器的ip是192.168.10.103&#xff09; 下面的centos6不能安装&#xff0c;在这里就是做比较&#xff0c;当然&#xff0c;用centos7不同版本也可以比较 这里上传的镜像都是完整版的&#xff0c;如果不想安装带桌面的&#…

python 第三天 编写文件查询、添加、删除

需求如下&#xff1a;输出&#xff1a;1、获取ha记录2、增加ha记录3、删除ha记录num raw_input(请输入操作序号&#xff1a;)如果用户输入的 1&#xff1a;read raw_input(请输入backend&#xff1a;) 如输入&#xff1a;www.oldboy.org讲配置文件 backend www.oldboy.or…

VMware12安装centos8

centos8就是创建虚拟机选5.x的&#xff0c;硬盘类型选IDE 的 centos6也是选5.x&#xff0c;硬盘类型随便 下面是语言 我是最小安装&#xff0c;第一个是完整安装 root密码 centos8重启网卡是&#xff0c;把配置文件里ONBOOTno里的no改为yes 然后使用nmcli重新回载网络配置 nmc…

Junit测试私有方法

2019独角兽企业重金招聘Python工程师标准>>> 首先先用eclipse建立一个一个Maven工程&#xff0c;然后在新建工程下添加一个Database类如下&#xff1a; public class Database {private static final Logger log LogManager.getLogger();public static boolean cre…

敏捷开发的原则

1. 快速迭代相对那种半年一次的大版本发布来说&#xff0c;小版本的需求、开发和测试更加简单快速。一些公司&#xff0c;一年仅发布仅2~3个版本&#xff0c;发布流程缓慢&#xff0c;它们仍采用瀑布开发模式&#xff0c;更严重的是对敏捷开发模式存在误解。2. 让测试人员和开发…

centos7搭建owncloud

有的公有云不靠谱&#xff0c;那就搭建一个私有云 目前来说&#xff0c; ownCloud 是私有云的最佳解决方案。它不仅是开源的&#xff0c;而且个人用户全免费&#xff0c; 1.安装http和数据库 yum install -y httpd mariadb-server mariadb 2.启动http和数据库 systemctl sta…

优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码)。

在您阅读本文前&#xff0c;先需要告诉你的是&#xff1a;即使是本文优化过的算法&#xff0c;DCT去噪的计算量依旧很大&#xff0c;请不要向这个算法提出实时运行的苛刻要求。 言归正传&#xff0c;在IPOL网站中有一篇基于DCT的图像去噪文章&#xff0c;具体的链接地址是&am…