[数论]TDL

For a positive integer n, let's denote function f(n,m) as the m-th smallest integer x that x>n and gcd(x,n)=1. For example, f(5,1)=6 and f(5,5)=11.
You are given the value of m and (f(n,m)−n)⊕n, where "⊕" denotes the bitwise XOR operation. Please write a program to find the smallest positive integer n that (f(n,m)−n)⊕n=k, or determine it is impossible.
1≤k≤1018,1≤m≤100.

分析

看起来很吓人其实...的题.
f(n,m)是比n大的第m个与n互素的数.所以f(n,1)=n+1,因为n+1是第一个比n大且与n互素的数.如果f(n,2)=n+x,那么x一定是从1开始(包括1)第2个与n互质的数,这是因为如果n+x与n互质,那么x就与n互质,如果1~x之间还有其他的与n互质的数y,那么f(n,2)就不是n+x了(而可能是n+y).
所以f(n,m)-n就是从1开始(包括1)第m个与n互质的数.设f(n,m)-n=t.我们断言t<700.这一判断的依据是:对于一个1018数量级的数来说,第100个与它互素的数不超过700.
这个论断是这么来的:第120个质数是659,在这120个质数里面,不与n互质的至多有20个,否则n的不同的素因子将至少有20个,而20!已经远远超过1018了,所以这120个质数里面至少有100个与n互质.所以700以内至少有100个与n互质的数.
所以我们从1到700枚举t,这样得到n=t⊕k,然后再检验第m个与n互素的数是否真的是t,直接暴力算出(枚举1到700)第m个与n互质的数就好了.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一年级语文上册生字表 生字表一(共400字) 啊(ā)爱(ài)安(ān)岸(àn)爸(bà)八(bā)巴(bā)...
    meychang阅读 8,136评论 0 6
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,043评论 0 2
  • 《高绩效教练》这本书以前听过好几次,但每次不由的都是站在自己假如是教练的立场上想着怎么去辅导别人。今天和其他书友一...
    吴怀智阅读 3,207评论 0 0
  • 爱职业,才能爱工作 程序员,也叫程序猿、码农,靠脑靠手靠屁股(坐得住)吃饭。 我热爱这份职业。手指轻绕间,...
    初学IT阅读 3,599评论 0 0
  • 速度
    66CQcq66阅读 1,054评论 0 0

友情链接更多精彩内容