当前位置: 首页 > news >正文

牛客网暑期ACM多校训练营(第三场) H Diff-prime Pairs(欧拉筛法)

求pair(i,j) : 满足  i/gcd(i,j)  和 j/gcd(i,j)  都是素数的 个数 在 n 内
解析:求1-n以内的所有素数,那么对于任意一对素数,x, y(x < y),他们都共能生成2*n/y个符合条件的数对。(例如n = 10, x = 2, y = 3, 则共有(2,3), (4,6), (6,9)这三对, 每一对数交换位置又能构成新的一对(3,2),(6,4),(9,6)

如果i,j自己就是素数的话,那么肯定满足条件,那么如果我们一开始就知道从1到n的范围里素数的个数的话,那么我们就可以得到答案的一部分解,为什么说是一部分,因为还有一部分解来自于素数的倍数(>1)。我们可以知道如果在1~n中,能被i整除的数的个数为n/i 素数已经用完了,那么我们把这个答案-1为剩下的倍数。

 

 

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;
#define ll long long

const int maxn=1e7+10;

bool vis[maxn];
ll p[maxn],a[maxn],cnt[maxn];
int tot;


void Find()
{
    memset(vis,0,sizeof(vis));
    vis[1]=vis[0]=1;
    tot=0;
    for(ll i=2;i<=1e7;i++)
    {
        if(!vis[i]) p[tot++]=i;
        for(ll j=0;j<tot&&i*p[j]<=1e7;j++)//1
        {
            vis[i*p[j]]=1;
        }
    }
}


int main()
{
    ll n,l;
    scanf("%lld",&n);
    Find();
    for(l=0;p[l]<=n&&l<tot;l++);
    ll ans=l*(l-1)/2;
    for(ll j=1;j<l;j++){
        cnt[j]=n/p[j]-1;//2
        ans+=j*cnt[j];//3,再与之前已经得到的乘数的相乘
    }
    printf("%lld\n",ans*2);
    return 0;
}

 

转载于:https://www.cnblogs.com/Fy1999/p/9607394.html

相关文章:

  • CF 1036 B Diagonal Walking v.2 —— 思路
  • 系统完整性检查工具--Tripwire和AIDE
  • tp5 路由定义
  • 随机图片
  • Vue框架的两种使用方式
  • WPF的x:名称空间
  • 15 个 Android 通用流行框架大全
  • BZOJ1926: [Sdoi2010]粟粟的书架
  • php 进行跨域操作
  • 定义和实现相同的顺序
  • 编程语言分类
  • 关于win10下JDK环境变量的配置以及关于JDK的一些说明
  • python包的安装
  • flask-sqlalchemy 配置 mysql (转载的文章)
  • NumPy排序、搜索和计数函数
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • chrome扩展demo1-小时钟
  • CSS实用技巧干货
  • JavaWeb(学习笔记二)
  • Object.assign方法不能实现深复制
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue-loader 源码解析系列之 selector
  • vue-router的history模式发布配置
  • 微信小程序--------语音识别(前端自己也能玩)
  • 物联网链路协议
  • 学习笔记TF060:图像语音结合,看图说话
  • 应用生命周期终极 DevOps 工具包
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 说说我为什么看好Spring Cloud Alibaba
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (20050108)又读《平凡的世界》
  • (C#)一个最简单的链表类
  • (C++17) std算法之执行策略 execution
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (python)数据结构---字典
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • . NET自动找可写目录
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net mvc部分视图
  • .NET 反射的使用
  • .NET 事件模型教程(二)
  • .NET轻量级ORM组件Dapper葵花宝典
  • /var/lib/dpkg/lock 锁定问题
  • @Bean, @Component, @Configuration简析
  • [1204 寻找子串位置] 解题报告
  • [codevs] 1029 遍历问题
  • [ffmpeg] 定制滤波器
  • [FROM COM张]如何解决Nios II SBTE中出现的undefined reference to `xxx'警告
  • [FTP]pureftp部署和优化
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装