QAQ大晚上不睡觉在这里写博客
是这样的,某牛客群友给出了一个猜想
对于任意给定正整数n,
满足大于n且phi(p)>n的最小正整数p,
一定是素数
我盯着素数表和欧拉函数表……
这不显然成立么……
然而证明证了我快三个小时也没证出来
涉及到素数的分布问题
但大概是等价推导了一下吧
感觉挺好玩的
记录一下
因此,在我看来
这个问题它等价于证
对于任意正整数n,
内必有素数,
ceil代表向上取整,是完全平方数p的下界
切比雪夫定理是说
若整数n > 3,则至少存在一个质数p,符合n < p < 2n − 2
但我感觉,好像这个猜想的下界更小一点???
然而素数分布大概不是初等数学能证出来的
因此,欢迎广大网友试证等价猜想
或指出我证明的不合理之处
或推翻牛客群这位网友的猜想QAQ
后记:
打了1e7以内的表,都没问题
应该是对的叭,素数分布那么稠密
代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <set>
#include <map>
#include <vector>
#include <stack>
#include <queue>
#include <functional>
const int INF=0x3f3f3f3f;
const int maxn=1e6+10;
const int mod=1e9+7;
const int MOD=998244353;
const double eps=1e-7;
typedef long long ll;
#define vi vector<int>
#define si set<int>
#define pii pair<int,int>
#define pi acos(-1.0)
#define pb push_back
#define mp make_pair
#define lowbit(x) (x&(-x))
#define sci(x) scanf("%d",&(x))
#define scll(x) scanf("%I64d",&(x))
#define sclf(x) scanf("%lf",&(x))
#define pri(x) printf("%d",(x))
#define rep(i,j,k) for(int i=j;i<=k;++i)
#define per(i,j,k) for(int i=j;i>=k;--i)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int prime[10*maxn],cnt;
bool ok[10*maxn];
void init()
{
for(ll i=2;i<=1e7;++i)
{
if(ok[i])continue;
prime[cnt++]=i;
for(ll j=i*i;j<=1e7;j+=i)
ok[j]=1;
}
}
int main()
{
bool flag=1;
init();
rep(i,1,1e7)
{
int r=ceil(sqrt(i+1.0/4)+1.0/2);
int p=*lower_bound(prime,prime+cnt,i),b=r*r-1;
if(p>b)
{
flag=0;
break;
}
//printf("now:%d prime:%d bound:%d\n",i,p,b);
}
if(!flag)puts("I found that!");
return 0;
}