CodeForces937B:Vile Grasshoppers(素数性质)

The weather is fine today and hence it‘s high time to climb the nearby pine and enjoy the landscape.

The pine‘s trunk includes several branches, located one above another and numbered from 2 to y. Some of them (more precise, from 2 to p) are occupied by tiny vile grasshoppers which you‘re at war with. These grasshoppers are known for their awesome jumping skills: the grasshopper at branch x can jump to branches .

Keeping this in mind, you wisely decided to choose such a branch that none of the grasshoppers could interrupt you. At the same time you wanna settle as high as possible since the view from up there is simply breathtaking.

In other words, your goal is to find the highest branch that cannot be reached by any of the grasshoppers or report that it‘s impossible.

Input

The only line contains two integers p and y (2 ≤ p ≤ y ≤ 109).

Output

Output the number of the highest suitable branch. If there are none, print -1 instead.

Examples

input

3 6

output

5

input

3 4

output

-1

Note

In the first sample case grasshopper from branch 2 reaches branches 2, 4 and 6 while branch 3 is initially settled by another grasshopper. Therefore the answer is 5.

It immediately follows that there are no valid branches in second sample case.

题意:给定P和Y,求最大的X,满足<=Y,且不是2到P的倍数。

思路: 没想到是暴力求解。。。这里利用了一个性质,1e9范围内相邻的素数距离不超过300。所以我们从Y向下验证是否是“素数”,这里的素数指的的无[2,P]区间的因子。可以想象,由于可以除的数少了,这些“素数”的距离比300更加接近,而检验素数的复杂度不超过根号。于是复杂度<O(300*sqrt(1e9));

#include<bits/stdc++.h>
using namespace std;
int P,Y;
bool isprime(int x){
    for(int i=2;i<=P&&i*i<=x;i++){
        if(x%i==0) return false;
    } return true;
}
int main()
{
    scanf("%d%d",&P,&Y);
    for(int i=Y;i>P;i--){
        if(isprime(i)) {
            printf("%d\n",i);
            return 0;
        }
     }
     printf("-1\n");
     return 0;
}

原文地址:https://www.cnblogs.com/hua-dong/p/9042518.html

时间: 2024-10-11 20:38:13

CodeForces937B:Vile Grasshoppers(素数性质)的相关文章

zoj 2526 反素数 附上个人对反素数性质的证明

反素数的定义:对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整 数,都有,那么称为反素数. 从反素数的定义中可以看出两个性质: (1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数尽量小 (2)同样的道理,如果,那么必有 个人理解性证明: 对(1)假设不是从2开始,那么假设n的最小素因素是k,把k换成2,2的次数仍等于k的次数,得到N,可知,N<n,并且f(n)==f(N),与n是反素数矛盾 对(2)假设ti<tj   ti,tj

zoj 1562 反素数 附上个人对反素数性质的证明

反素数的定义:对于不论什么正整数,其约数个数记为.比如,假设某个正整数满足:对随意的正整 数.都有,那么称为反素数. 从反素数的定义中能够看出两个性质: (1)一个反素数的全部质因子必定是从2開始的连续若干个质数.由于反素数是保证约数个数为的这个数尽量小 (2)相同的道理,假设,那么必有 个人理解性证明: 对(1)如果不是从2開始,那么如果n的最小素因素是k,把k换成2,2的次数仍等于k的次数,得到N,可知,N<n,而且f(n)==f(N).与n是反素数矛盾 对(2)如果ti<tj   ti,

cf584DDima and Lisa(素数性质,三素数,哥德巴赫猜想)

题目链接 Dima loves representing an odd number as the sum of multiple primes, and Lisa loves it when there are at most three primes. Help them to represent the given number as the sum of at most than three primes. More formally, you are given an odd nume

一个关于素数的神奇性质

一 写在前面 1.1 本文内容 一个关于素数的神奇性质. 二 素数性质 性质:所有大于等于5的素数一定和6的倍数相邻!此性质可以被证明,证明方法可以去搜索相关资料.下面给出1000以内的素数,你可以验证一下看是不是这样. 有了这个性质,下面再给出一个其在质因数分解中的实际应用例子.题目链接在此.题目大意是给定一个正整数N,要求将其分解成多个质因数相乘的形式.需要注意的是质因数分解的常用算法是试除法,例子中使用的也是试除法.并且每一个合数都能够写成几个质因数相乘的形式. 上述题目的一个可行代码如下

zoj2562:搜索+数论(反素数)

题目大意:求n以内因子数量最多的数  n的范围为1e16 其实相当于求n以内最大的反素数... 由素数中的 算数基本原理 设d(a)为a的正因子的个数,则 d(n)=(a1+1)(a2+1).....*(an+1); 又由反素数的性质2: p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=.... 我们可以指定搜索策略和剪枝 详见代码和注释 #include <iostream> #include<stdio.h> #include&

素数 专题

素数性质总结: 小于x的素数个数(随着x逐渐增大),与x/lnx近似: 素数测试方法,诶拉托色尼筛法:如果n是一个合数,那么n一定有一个不超过sqrt(n)的素因子:6N±1法:对于任何一个自然数,都可以表示为如下形式之一:6N,6N+1,6N+2,6N+3,6N+4,6N+5(N=0,1,2,3...)显然,当N>=1时,只有形如6N+1,6N+5的自然数有可能是素数(代码后面贴上) n!的素因子分解中的素数p的幂为 n/p+n/p2+n/p3+...... 梅森素数:如果m是一个正整数,且2

Miller-rabin判素数

用Miller-rabin判素数之前,先要知道一个叫费马小定理的东西. 费马小定理:如果p是质数,那么任意和p互质的数的p-1次方对p取模都等于一. 即:任意gcd(a,p)==1,那么a^(p-1)≡1(mod p) 既然我们用费马小定理又得到了一个新的质数的性质,那么我们就可以用这个性质来判定素数. 为了判定p是不是质数,我们随机检验一些a检验a^(p-1)mod p是否为1 但是这样判定一个素数并不是百分百正确的,有一些数不是素数,但依据费马小定理还是会判定成素数. 例如:p=561=3*

【原创】开源Math.NET基础数学类库使用(09)相关数论函数使用

开源Math.NET基础数学类库使用系列文章总目录: 链接 2.开源C#彩票数据资料库系列文章:链接 3.开源的.NET平台ORM组件文章:链接 4.其他开源的.NET组件文章:链接 5..NET平台机器学习组件-Infer.NET系列文章:链接 6.Matlab混合编程文章:链接 前言 数论就是指研究整数性质的一门理论.数论=算术.不过通常算术指数的计算,数论指数的理论.整数的基本元素是素数,所以数论的本质是对素数性质的研究.它是与平面几何同样历史悠久的学科.它大致包括代数数论.解析数论.计算

zoj 2562

典型的反素数 对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数· 性质一:一个反素数的质因子必然是从2开始连续的质数. 性质二:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=.... #include <iostream>using namespace std; typedef long long ll; int