Questions tagged «number-theory»

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

23
实施7分频规则
要检查十进制数是否可以被7整除: 删除最后一位。将其乘以2并从剩余的值中减去。如果结果可被7整除,则原始数字可被7整除。 (例如也在此处描述) 此规则适用于手动除数检查。例如: 2016年是否可以被7整除? 减去6*2201;我们得到189。这是否可以被7整除?要检查它,让我们再次应用规则。 减去9*218;我们得到0。因此,2016被7整除。 在此挑战中,您应应用此规则,直到可分割状态明显,即该数字不大于70(但是,请参阅下面的详细信息)。制作功能或完整程序。 输入:正整数;您的代码应支持最多32767的输入(支持任意精度整数是一个加分项;请参见下文)。 输出:不大于70的整数(可能为负数),这是将7除数规则应用零次或更多次的结果。 测试用例: Input Output Alternative output 1 1 10 10 1 100 10 1 13 13 -5 42 42 0 2016 0 9 9 99 -9 9999 -3 12345 3 32767 28 -14 ---------- Values below are only relevant for the …

20
几点钟了?
在我的房间里,我有一个怪异的时钟(点击放大): 其中大多数都不难弄清楚,但是4点钟的时钟特别棘手: 通常,在模数运算中,像1/2这样的分数没有意义,因为仅涉及整数。因此,正确的方法是将其视为2 的倒数,或者换句话说,将其视为其中的数字。如此说来,片刻的想法就会揭示出,因为。 但是,简单地找到乘法逆就太困难了。因此,让我们提高求幂的难度,换句话说,找到2的模对数或离散对数。在这种情况下,3是2相对于7的模对数。对于那些拥有数论/抽象代数的人背景,这意味着计算2模n的乘法阶。 挑战 给定一个正奇整数n大于1,输出最小的正整数x,其中。 例子 n x 3 2 5 4 7 3 9 6 11 10 13 12 15 4 17 8 19 18 21 6 23 11 25 20 27 18 29 28 31 5 33 10 35 12 37 36 39 12 41 20 …

24
Deranged!Combinatorics:计算子因子
次因子或rencontres数字(A000166)是一个数字序列,类似于排列组合中显示的因子阶数字。特别是ñ个subfactorial N!给出的数量紊乱一套的ñ元素。排列是一种排列,其中没有元素保持在相同位置。可以通过以下递归关系定义子因子: !n = (n-1) (!(n-1) + !(n-2)) 实际上,相同的递归关系也适用于阶乘,但是对于子阶,我们从以下内容开始: !0 = 1 !1 = 0 (对于阶乘,我们当然有1!= 1。) 给定n,您的任务是计算!n。 规则 像阶乘一样,子阶数增长非常快。如果您的程序只能处理输入n以便可以用您的语言的本机数字类型表示!n,那是很好的。但是,理论上,您的算法必须对任意n有效。这意味着,您可以假设积分结果和中间值可以用您的语言准确表示。请注意,如果常数e以有限精度存储或计算,则排除常数e。 结果必须是一个精确的整数(尤其是您不能用科学计数法近似结果)。 您可以编写程序或函数,并使用接收输入和提供输出的任何标准方法。 您可以使用任何编程语言,但是请注意,默认情况下,这些漏洞是禁止的。 这是代码高尔夫球,因此以字节为单位的最短有效答案为准。 测试用例 n !n 0 1 1 0 2 1 3 2 4 9 5 44 6 265 10 1334961 12 176214841 13 2290792932 14 32071101049 20 …

13
找到3的10-adic立方根
我喜欢将10 adic数字视为无限向左移动的数字,或者是一个非常大的10的幂模的整数。 事物无限地向左移动并消失。要了解我的意思,请注意...6667 * 3 = 1在10 adic土地上,因为向左携带的“ 2”移至无穷大。 对于10-adic数,加法和乘法是有意义的,因为n总和/乘积的最后一位仅取决于n求和/被乘数的最后一位。 给定n,您需要打印n10 adic立方根3 的最后一位,即x满足x*x*x = 3。 结束于: ...878683312291648481630318492665160423850087895134587 您的代码必须n=1000在提交之前终止。 假设如果您要打印的数字以零开头,那么您不需要打印前导零,因为实际上并不是打印多余零的点。 这是代码高尔夫球。以字节为单位的最短答案将获胜。

12
写数字作为N次方的差
挑战 有许多数字可以表示为两个平方的差,两个立方体的差,甚至更高的幂。关于平方,有两种写数字的方法,例如75,等于2个平方的差。你可以写: 75 = (10)^2 - (5)^2 = (14)^2 - (11)^2 = (38)^2 - (37)^2 因此,让我们谈谈挑战。首先,用户输入数字,然后输入n的值。您需要以aⁿ-bⁿ的形式显示该数字的所有写入方式。 输入输出 输入将是数字和n的值。您的输出应具有所有这样的“ a”和“ b”对,从而满足上述条件。该对中的第一个数字必须大于第二个。请注意,a,b,n和输入数字均为正整数,并且n> 1。 例子 50, 2 -> (none) 32, 2 -> (9,7), (6, 2) 7, 3 -> (2,1) 665, 6 -> (3, 2) 81, 4 -> (none) 计分 这是代码高尔夫球,因此最短的代码获胜!

22
伯特兰素数
Bertrand的假设指出,对于每个整数n≥1,至少有一个素数p使得n <p≤2n。为了验证n <4000的该定理,我们不必检查4000个情况:Landau技巧说,检查 2, 3, 5, 7, 13, 23, 43, 83, 163, 317, 631, 1259, 2503, 5003 都是素数 因为这些数字中的每一个小于其前身的两倍,所以每个间隔{y:n <y≤2n}至少包含那些质数之一。 此数字序列为Bertrand素数(OEIS A006992),其定义如下: a(1) = 2 a(n) = largest prime below 2a(n-1) 挑战 执行此序列。你可以写 给定n的函数或程序返回a(n)(索引为0或1), 给定n的函数或程序返回此序列的前n个(或n-1或n + 1)条目, 语言中的无限列表或流或生成器或类似的等效项。

29
帕斯卡三角(排序)
这里的大多数人都熟悉Pascal的Triangle。它由连续的行组成,其中每个元素是其两个左上和右上邻居的总和。以下是第一5行(从Generate Pascal的三角形借用): 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 . . . 将这些行向左折叠 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 . . . 升序排列 1 1 1 1 1 2 1 1 3 3 …

30
一起配音
在4chan上,流行游戏获得了。网站上的每个帖子都会获得一个顺序的帖子ID。由于您无法影响或确定它们,因此人们会尝试猜测(至少是一部分)他们自己的帖子编号,通常是前几位数。游戏的另一个版本称为配音,其目标是在数字的末尾(例如1234555)获得重复的数字。 您的任务(如果希望接受)是编写一个程序,该程序将帖子ID作为输入(标准整数,可以假设在2 ^ 32以下),并返回最后有多少个重复数字。 规则 不允许出现标准漏洞。 该程序可以是一个函数,完整程序,REPL命令,实际上可以执行任何操作,只要运行它不需要外部未计数的代码/参数即可。 输入可以来自STDIN,函数参数,命令行参数,文件,任何适合您的输入。 测试用例 Input: 14892093 Output: 1 Input: 12344444 Output: 5 Input: 112311 Output: 2 Input: 888888 Output: 6 Input: 135866667 //Post number I got on /pol/ few days ago, rip Output: 1

6
平方的十进制串联
前提 一天晚上,我只是在考虑数字。我发现一些关于数字的独特之处,例如7、10、12、13等。他们是正方形的正方形!意思是,当平方时,由平方本身组成。OEIS称它们为Squares,它们是两个或多个正方形的十进制连接。 这样的数字的示例包括7(49具有2 2和3 2)13(169具有4 2和3 2)和20(400具有2 2和0 2)。其他示例包括37,因为1369是一个术语,可以将其划分为1、36和9。1444(38 2)是一个术语,可以将其划分为1、4、4、4。 .SE,它以我的名字命名! 挑战 设计一个打印TanMath数字的程序。给定数字n(从1开始),打印第n个TanMath数字T(n)。 作为代码示例: >> 1 >> 7 要么 >> 4 >> 13 参考Python实现(感谢@MartinBüttner和@ Sp3000!): from math import sqrt n = input() def r(digits, depth): z = len(digits) if z < 1: return (depth > 1) else: for i in …

9
打印所有3 x 3坚固的正方形
坚固的正方形(类似于魔术正方形)是整数1到N 2在N by N网格上的排列,以使每2 by 2子网格具有相同的总和。 例如,对于N = 3,一个坚固的正方形是 1 5 3 9 8 7 4 2 6 因为四个2 x 2子网格 1 5 9 8 5 3 8 7 9 8 4 2 8 7 2 6 全部加起来等于23, 23 = 1 + 5 + 9 + 8 = 5 + …
24 code-golf  number  arithmetic  number-theory  grid  code-golf  binary  code-golf  popularity-contest  code-golf  chemistry  code-golf  code-golf  date  code-golf  quine  chess  code-golf  hexadecimal  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  math  date  code-golf  typography  code-golf  string  code-golf  string  code-golf  code-golf  math  arithmetic  array-manipulation  grid  code-golf  puzzle-solver  code-golf  music  audio  code-golf  decision-problem  code-golf  geometry  code-golf  number  bitwise  code-golf  string  metagolf  hexagonal-grid  code-golf  string  code-golf  sorting  popularity-contest  code-golf  game  sequence  base-conversion  binary  code-golf  decision-problem  graph-theory  natural-language  code-golf  math  parsing  optimized-output  code-golf  array-manipulation  code-golf  graphical-output  image-processing  tiling  code-golf  graph-theory  path-finding  chess  code-golf  code-golf  balanced-string  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  statistics  code-golf  chemistry 

10
费马多边形数定理
Fermat的多边形数定理指出,每个正整数都可以表示为最多nnn 多边形的和。这意味着每个正整数都可以表示为最多三个三角形,四个正方形,五个五角形等的总和。您的任务是取一个正整数和一个整数,并输出相加为角整数。nnnxxxs≥3s≥3s \ge 3sssxxx 第个角整数,其中和可以用两种方法定义。非数学-Y方式是个 -gonal数可以构造为正多边形与两侧,各有长度的。例如,对于(三角数):nnnsssn≥1n≥1n \ge 1s≥3s≥3s \ge 3nnnssssssnnns=3s=3s = 3 请参阅此处以获取具有更大示例。sss math-y定义是通过使用的公式,它得出第个角数:P(n,s)P(n,s)P(n, s)nnnsss P(n,s)=n2(s−2)−n(s−4)2P(n,s)=n2(s−2)−n(s−4)2P(n, s) = \frac{n^2(s-2) - n(s-4)}{2} 这是在维基百科页面给出这里。 输入项 两个正整数和,条件为。您可以用您的语言以最自然的表示形式输入这些整数(十进制,一进制,教堂数字,整数值浮点数等)。sssxxxs≥3s≥3s \ge 3 输出量 整数列表,最大长度为,其中L的总和等于x,L中的所有整数都是s-角整数。同样,整数可以用您的语言以自然表示形式输出,并带有任何不同的,一致的分隔符(因此,十进制输出使用非小数字符,一进制输出使用不同的字符等)。LLLsssLLLxxxLLLsss 规则 输入或输出将永远不会超出您语言的整数限制 LLL不必订购 如果有多个可能的输出,则任何一个或全部都可以接受 这是代码高尔夫球,因此以字节为单位的最短代码获胜 测试用例 x, s => L 1, s => 1 2, s => 1, 1 5, 6 => …

12
Divinacci序列
Divinacci(OEIS) 执行斐波那契数列,但不要使用: f(n) = f(n-1)+f(n-2) 使用: f(n) = sum(divisors(f(n-1))) + sum(divisors(f(n-2))) 对于输入n,输出第n个项,您的程序应该只有1个输入。 前14个字词(0索引,您可以1索引;使用的状态): 0 | 0 # Initial | [] 1 | 1 # Initial | [1] => 1 2 | 1 # [] + [1] | [1] => 1 3 | 2 # [1] + [1] | [1,2] => …

14
重用您的代码!
在这一挑战中,我们试图立即解决两个重要问题。他们是: 给定整数a和b,确定b -1是否为质数。 给定整数a和b,返回nCr(a,b)。 具体来说,您必须编写两个程序,一个程序执行第一个任务,另一个程序执行另一个任务。由于我们想一次解决两个问题,因此建议在两个程序中使用同一段代码。 计分 答案的分数是两个程序之间的Levenshtein距离。分数越低越好。如果出现平局,则以两个程序中组合代码最短的答案为准。您可以使用此脚本来计算解决方案的分数。 规则 您必须用相同的语言编写两个程序来解决上述任务。您可以使用所需的任何I / O方法。对于任务1,您可以返回真实/虚假值,或选择两个值分别表示是和否,然后相应地返回它们。例如。您可以选择“ "prime"真”和“ "not prime"假”。 您使用的算法必须适用于所有可能的输入,但是如果代码由于使用的数字类型的限制而无法用于大量数字,则可以。您可以假定输入有效。 程序的任何子集都不能解决问题,即。如果删除了任何字符,该代码将无法正常工作。例如,以下代码无效,因为可以在不破坏程序的情况下删除未使用的else-block: if (1) { /* change to 0 to get the second program*/ ... } else { ... } 不允许出现标准漏洞。 测试用例 a b -1是质数? a b 1 1 false 2 3 true 5 2 false …

6
正整数的部分分解
正整数的集合是正整数d_1 d_2 ... d_k的因式分解,n如果 d_1 * d_2 * ... * d_k = n 每个正整数都有一个唯一的素因式分解,但通常它们也具有其中某些项是复合的分解。例如 12 = 6 * 2 = 4 * 3 = 3 * 2 * 2 编写一个程序,函数,动词或类似物,将单个正整数作为输入并返回或打印其不同因式分解的完整列表。分解可以以任何顺序生成,并且它们的项可以以任何顺序生成,但是彼此之间不应有两个置换。1除两个例外,分解可能不包括:对于输入,n您可以给出分解n*1而不是n; 对于输入,1您可以给出因式分解1而不是空白列表。 您可以假定输入将在带符号的32位整数范围内。如果输出为字符串,则分解中的数字定界与分解中的定界之间应该有明显的区别,但是(例如)没有必要将因子与连在一起*。 您的代码应能够在合理的台式机上在10分钟内处理任何有效输入。 例子 1 [[]] or [[1]] or [[1 1]] 7 [[7]] or [[7 1]] or [[1 7]] 12 …

10
高度复合数
甲高合成数是具有多个除数比任何小的正整数具有一个正整数。这是OEIS序列A002182。它的前20个学期是 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040, 7560 例如,4由于序列中有3个除数(即1、2、4),而3中只有2个除数,所以2也具有2个除数,而1具有1个除数。 挑战 给定正整数输入n,根据您的选择输出第n个高复合数或前n个高复合数(但每个输入n的选择必须相同)。 规则 程序或函数在理论上应该在给定无限时间和内存的情况下用于任意大的输入,而不考虑数据类型的限制。本质上,这意味着无需对有限数量的值进行硬编码。 在实践中,程序或函数应在合理的时间内运行,例如少于1分钟,最多n到20。最大输入或输出可能受您的语言标准数据类型的限制(但同样,算法在理论上应该可以工作对于任意大数)。 允许使用任何合理的输入和输出格式,包括一元。 代码高尔夫。最少的字节数获胜。

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.