Questions tagged «number-theory»

数论涉及数的性质和关系,主要是正整数。

19
理论上输出格雷厄姆数
格雷厄姆的电话号码G是这样定义的: u(3,n,1) = 3^n u(3,1,m) = 3 u(3,n,m) = u(3,u(3,n-1,m),m-1) [Knuth's up-arrow notation] [Conway chained arrow notation] THEN g1 = u(3,3,4) g2 = u(3,3,g1) g3 = u(3,3,g2) ... G = u(3,3,g63) 您将得到u(3,3,2)=7625597484987检查代码的信息。 您的任务是编写一个程序/函数G,如果有足够的整数大小和足够的时间,它将确定性地输出值。 参考文献 格雷厄姆的电话 Knuth的向上箭头表示法 Conway链式箭头符号 排行榜 显示代码段 var QUESTION_ID=83873,OVERRIDE_USER=48934;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var …

19
我的馅饼被平分了吗?
编写一个包含正整数的非空列表的程序或函数。您可能会假设它是以合理方便的格式输入的,例如"1 2 3 4"或[1, 2, 3, 4]。 输入列表中的数字表示完整饼图的切片,其中每个切片的大小与其对应的数字成比例,并且所有切片均按给定的顺序排列在图表周围。 例如,饼图为1 2 3 4: 您的代码必须回答的问题是:饼图是否一分为二?也就是说,从圆的一侧到另一侧是否存在一条完美的直线,将其对称地一分为二? 你需要输出truthy值,如果有至少一个平分线和输出falsy如果有没有价值。 在该1 2 3 4示例中,之间有一个等分线4 1,2 3因此输出将是真实的。 但是对于输入而言1 2 3 4 5,没有平分线,因此输出将是虚假的: 其他例子 以其他方式排列数字可能会消除等分线。 例如2 1 3 4→虚假: 如果输入列表中只有一个数字,则饼图不会一分为二。 例如10→虚假: 可能有多个平分线。只要大于零,输出就是真实的。 例如6 6 12 12 12 11 1 12→真实:(这里有3个等分线) 即使平分在视觉上不明显,也可能存在。 例如1000000 1000001→虚假: 例如1000000 1000001 1→真实: (感谢nces.ed.gov生成饼图。) 测试用例 …
43 code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

30
构造身份矩阵
挑战非常简单。给定整数输入n,输出n x n单位矩阵。单位矩阵是1从左上角到右下角的s 矩阵。您将编写一个程序或函数来返回或输出您构造的身份矩阵。您的输出可能是2D数组,或者是由空格/制表符和换行符分隔的数字。 输入和输出示例 1: [[1]] 2: [[1, 0], [0, 1]] 3: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 4: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 5: [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], …

12
自然产生的素数生成器
有很多主要的生成函数。它们几乎都是基于Eratosthenes筛子,Möbius函数或Wilson定理构造而成的,通常在实践中不可行。但是也有一些发电机,它们的结构非常简单,是偶然发现的。 2003年,Stephen Wolfram在NKS暑期学校的实时计算机实验中探索了一类嵌套递归方程。马修·弗兰克(Matthew Frank)周围的一群人进行了进一步的实验,发现了简单复发的有趣特征 a(n) = a(n-1) + gcd(n,a(n-1)) 起始值为a(1) = 7。差异a(n) - a(n-1) = gcd(n,a(n-1))似乎总是1或素数。前几个区别是(OEIS A132199): 1, 1, 1, 5, 3, 1, 1, 1, 1, 11, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …

30
这个数字是-2的整数次幂吗?
有很多聪明的方法来确定数字是否为2的幂。这不再是一个有趣的问题,因此让我们确定给定的整数是否为-2的整数次幂。例如: -2 => yes: (-2)¹ -1 => no 0 => no 1 => yes: (-2)⁰ 2 => no 3 => no 4 => yes: (-2)² 规则 您可以编写程序或函数,并使用接收输入和提供输出的任何标准方法。 您的输入是一个整数,如果该整数是-2的整数次幂,则输出必须是一个真实值,否则,则必须是一个虚假值。不允许其他输出(例如警告消息)。 通常的整数溢出规则适用:您的解决方案必须能够在语言的假设(或实际)版本中使用任意大整数,默认情况下,所有整数都是无界的,但是如果您的程序由于实现而在实践中失败不支持大整数,这不会使解决方案无效。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 获奖条件 这是一场代码高尔夫球比赛:字节数最少(在您选择的编码中)的答案是获胜者。

30
我可以将数字总和除以两倍吗?
给定一个正整数作为输入,如果数字可被其数字总和的两倍整除,则您的任务是输出一个真值,否则将输出一个假值(OEIS A134516)。换一种说法: (sum_of_digits)*2 | number 您可以为真/假情况指定任何有限的值集,而不是为真/假情况的真/假值,并用它们补充其他值。举一个简单的例子,您可以使用0真数字,而所有其他数字用于假数字(如果愿意,反之亦然)。 标准输入和输出规则适用。默认漏洞也适用。 您可以将输入作为整数或该整数的字符串表示形式。 这是代码高尔夫球,因此以字节为单位的最短代码获胜! 我是PPCG的新手,因此,如果可能的话,我希望您发表解释。 测试用例 输入-输出-(原因) 80-真实-(16除以80) 100-真实-(2除以100) 60-真实-(12除以60) 18-Truthy-(18除以18) 12-真实-(6除数12) 4-虚假-(8不除以4) 8-虚假-(16不除8) 16-虚假-(14不除以16) 21-虚假-(6不除21) 78-虚假-(30不除以78) 110-虚假-(4不did 110) 111-虚假-(6不除111) 390-虚假-(24不除以390)

7
分享(字符)关怀!
总览 请考虑以下任务: 给定正整数n> 0,输出其整数平方根。整数平方根若干Ñ是最大的值X,其中X 2 ≤Ñ,通常用下式表示floor(sqrt(n))。 例如:25 -> 5,24 -> 4,40 -> 6,1 -> 1。 该任务本身很容易完成。但是,在这个挑战中,您的任务是仅使用25个字符来解决尽可能多的语言问题。 例 首先,您需要选择一组 25个字节(无重复)。它可能看起来像这样(注意前导空格): ()*-.05:=>Mabdhilmnqrst| 然后,您面临的挑战是仅使用此集合中的字符,以尽可能多的基于文本的语言(对不起,Piet)来构造问题的解决方案。您可以根据需要多次使用字符,但是一定不能在集合之外使用字符。 解决方案可以是完整的程序或功能,但不能是代码段。例如,使用这组字符,我可以这样做: M -> (int) Math.sqrt(M) // Java (lambda expression) M => Math.sqrt(M)|0 // Javascript (unnamed function) lambda M: int(M**.5) // Python (lambda function) 由于我使用了3种语言,因此我得到3分。 请在答案中还包括您正在使用的字节组。 规则 这是一个罗塞塔石的挑战-你的分数是语言您提交包括数量。最高分获胜。有标准漏洞。 对于此挑战,“语言”被视为一种截然不同的编程语言-禁止使用同一语言的多个版本(Python 2,Python …

30
最大公约数
您的任务是在尽可能少的代码字节中计算两个给定整数的最大公约数(GCD)。 您可以编写程序或函数,通过我们接受的任何标准方法(包括STDIN / STDOUT,函数参数/返回值,命令行参数等)获取输入并返回输出。 输入将是两个非负整数。您应该能够处理语言的默认整数类型支持的完整范围,也可以处理range [0,255],以较大者为准。您可以确保至少有一个输入为非零。 不允许使用用于计算GCD或LCM(最小公倍数)的内置函数。 适用标准代码高尔夫球规则。 测试用例 0 2 => 2 6 0 => 6 30 42 => 6 15 14 => 1 7 7 => 7 69 25 => 1 21 12 => 3 169 123 => 1 20 142 => 2 101 202 => 101

22
自然派#0-摇滚
目标 创建一个接受输入的程序/函数N,检查N随机整数对是否相对质数,然后返回sqrt(6 * N / #coprime)。 TL; DR 这些挑战是仅需要自然和大脑(也许还有一些可重复使用的资源)才能逼近Pi的算法模拟。如果您在僵尸启示录期间确实需要Pi,那么这些方法不会浪费弹药!还有另外八个挑战。检出沙盒帖子以提出建议。 模拟 我们在模拟什么?好吧,两个随机整数是相对质数(即coprime或gcd == 1)的概率是6/Pi/Pi,因此计算Pi的自然方法是挖出两个桶(或少数几个)的岩石。数他们;看看他们的gcd是否为1;重复。这样做后,一对夫妇很多次,sqrt(6.0 * total / num_coprimes)会趋向Pi。如果计算世界末日后的平方根使您感到紧张,请不要担心!有牛顿法。 我们如何模拟这一点? 接受输入 N 请执行以下N次数: 均匀生成随机正整数,i并且j 用 1 <= i , j <= 10^6 如果gcd(i , j) == 1:result = 1 其他: result = 0 取N结果的总和,S 返回 sqrt(6 * N / S) 规格 输入值 …
39 code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

29
伪析因
有时在数学问题或谜语中会出现一个相当奇怪的数字。伪因子(N)是数字1到N的最小(即最低)公倍数;换句话说,它是最低的数字,其中包含从1到N的所有数字。 例如pseudofactorial(7)= 3 * 4 * 5 * 7,与7相同!除了2和6已删除,因为它们包含在其他术语中。 编写一个程序来计算pseudofactorial(N),并且一如既往地以最短的代码为准。 这是供您使用的简短列表。可以在OEIS中的A003418下找到更多测试用例。 阶乘: 1个 2 6 24 120 720 5040 伪因子: 1个 2 6 12 60 60 420

3
解决魔方
编写最短的程序,以在合理的时间范围内移动并解决Rubik的多维数据集(3 * 3 * 3)(例如,在您的计算机上最多5秒,而最多移动1000秒)。 输入的格式为: UF UR UB UL DF DR DB DL FR FL BR BL UFR URB UBL ULF DRF DFL DLB DBR (此特定输入表示已解决的多维数据集)。 前12个2个字符的字符串是UF,UR,... BL位置中的边(U =上,F =前,R =右,B =后,L =左,D =下),然后是下8个3个字符的字符串是UFR,URB,... DBR位置中的角。 输出应以这种格式给出一系列移动: D+ L2 U+ F+ D+ L+ D+ F+ U- F+ 其中D1或D +代表将D(下)面顺时针旋转90度,L2代表将L面旋转180度,U3或U-代表将U面逆时针旋转90度。 字母不区分大小写,空格是可选的。 …

23
放弃所有正方形,分开我的人
定义 甲完全平方是可以被表示为正方形另一个整数的整数。例如,36是一个完美的正方形,因为6^2 = 36。 无平方数是一个整数,除之外,任何整数都不能将其整除1。例如,10是一个无平方数。但是,12不是自由平方数,因为12它可以被整除4并且4是一个完美的平方。 任务 给定一个正整数n,输出除的最大平方无数n。 测试用例 n output 1 1 2 2 3 3 4 2 5 5 6 6 7 7 8 2 9 3 10 10 11 11 12 6 13 13 14 14 15 15 16 2 17 17 18 6 19 19 20 10 …

28
这是普罗斯数吗?
一个普罗斯数,弗朗索瓦·普罗斯命名,是可以表示为一个数 N = k * 2^n + 1 其中k是奇数个正整数,n是一个这样的正整数2^n > k。让我们使用一个更具体的例子。取3。3是Proth数,因为它可以写成 (1 * 2^1) + 1 并2^1 > 1感到满意。5也是Proth编号,因为它可以写为 (1 * 2^2) + 1 并2^2 > 1感到满意。但是,7 不是 Proth编号,因为以表格形式写入的唯一方法N = k * 2^n + 1是 (3 * 2^1) + 1 并且2^1 > 3不满意。 您面临的挑战非常简单:给定正整数,您必须编写一个程序或函数,确定该程序或函数是否是Proth数字。您可以采用任何合理的格式输入,如果输出是Proth值,则应输出真实值,如果不是,则应输出错误值。如果您的语言具有“ Proth-number detection”功能,则可以使用它们。 测试IO 以下是前1000个Proth的前46个数字。(A080075) 3, 5, …

30
用三三代替二
给定一个正整数n编写一些代码来利用其因式分解和替换所有的因素,它2与3。 例如 12 = 2 * 2 * 3 -> 3 * 3 * 3 = 27 这是代码高尔夫球,因此目标是最小化答案的字节数。 测试用例 1 -> 1 2 -> 3 3 -> 3 4 -> 9 5 -> 5 6 -> 9 7 -> 7 8 -> 27 9 -> 9 10 -> 15 11 …

14
递增格雷码
介绍 甲格雷码是二进制表示的替代,其中许多是通过切换只有一个位,而不是比特的可变量的递增。以下是一些格雷码及其十进制和二进制等效项: decimal | binary | gray ------------------------- 0 | 0 | 0 ------------------------- 1 | 1 | 1 ------------------------- 2 | 10 | 11 ------------------------- 3 | 11 | 10 ------------------------- 4 | 100 | 110 ------------------------- 5 | 101 | 111 ------------------------- 6 | 110 | 101 ------------------------- …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.