Questions tagged «number-theory»

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

12
查找所有
介绍 在数论中,我们说一个数为kkk光滑的数,当它的主要因子最多为kkk。例如,2940是7-平滑因为2940=22⋅3⋅5⋅722940=22⋅3⋅5⋅722940=2^2\cdot3\cdot5\cdot7^2。 在这里,我们将kkk平滑对定义为两个都是kkk平滑的连续整数。7光滑对一个例子将是(4374,4375)(4374,4375)(4374,4375),因为4374=2⋅374374=2⋅374374=2\cdot3^7和4375=54⋅74375=54⋅74375=5^4\cdot7。有趣的事实:这实际上是最大的7平滑对。 斯托默(Størmer)在1897年证明,对于每kkk,只有有限的kkk平滑对,并且这一事实被称为斯托默定理。 挑战 您的任务是编写一个程序或函数,给定素数输入kkk,以您想要的任何顺序输出或返回所有kkk平滑对,而没有重复(对内的顺序无关紧要)。 请注意,对于质数ppp和qqq,假设p&lt;qp&lt;qp<q,则所有ppp平滑对也是qqq平滑对。 样品I / O Input: 2 Output: (1, 2) Input: 3 Output: (1, 2), (2, 3), (3, 4), (8, 9) Input: 5 Output: (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (8, 9), (9, 10), (15, 16), (24, 25), (80, 81) Input: …

15
手动逻辑门
编写一个模拟基本逻辑门的程序。 输入:一个全大写单词,后跟2个1位二进制数字,以空格分隔,例如OR 1 0。门OR,AND,NOR,NAND,XOR,和XNOR需要。 输出:输入的逻辑门的输出将被赋予两个数字:1或0。 例子: AND 1 0成为0 XOR 0 1变得1 OR 1 1成为1 NAND 1 1成为0 这是codegolf,所以最短的代码获胜。
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

10
二次残差非常有趣!
定义 二次残基 如果存在整数,则整数称为为模的二次余数:rrrñ Xnnnxxx x2≡r(modn)x2≡r(modn)x^2\equiv r \pmod n 可以通过查看x ^ 2 \ bmod n对于0 \ le x \ le \ lfloor n / 2 \ rfloor的结果,简单地计算出模nnn的二次x2modnx2modnx^2 \bmod n。0≤x≤⌊n/2⌋0≤x≤⌊n/2⌋0 \le x \le \lfloor n/2\rfloor 挑战顺序 我们定义anana_n作为相同值的出现的最小数目(r0−r1+n)modn(r0−r1+n)modn(r_0-r_1+n) \bmod n对于所有对(r0,r1)(r0,r1)(r_0,r_1)二次剩余的模nnn。 前30个术语是: 1,2,1,1,1,2,2,1,1,2,3,1,3,4,1,1,4,2,5,1,2,6,6,1,2,6,2,2,7,21,2,1,1,1,2,2,1,1,2,3,1,3,4,1,1,4,2,5,1,2,6,6,1,2,6,2,2,7,21, 2, 1, 1, 1, 2, 2, 1, 1, 2, 3, 1, …

7
做出最大和最小的数字
这篇帖子的灵感来自于Puzzling。这个难题的破坏者在下面。 给定三个正整数作为输入,(x, y, z)构造包含范围[x, y],将该范围连接在一起,然后删除z不必要的连续数字以产生可能的最大和最小正整数。不允许前导零(即,数字必须以开头[1-9])。以任意顺序输出这两个数字。 对于Puzzling帖子中的示例,对于input (1, 100, 100),最大可能的数字是99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100, 而最小的数字是10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100, 遵循jafe在此处发布的答案的以下逻辑: 我们不能影响数字的长度(有固定的数字位数),因此要使值最大化,我们采用最大的第一位数字,然后选择第二位数字等。 删除84个第一个非昵称(要删除的剩余16位数字): 999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 接下来的17位数字中最大的数字是7,因此从此处开始,答案中的第二位数字最多为7(我们不能删除超过16位的数字)。因此,删除15个非7的...(剩下1个数字以删除):999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 从这里开始,下一位数字最多为8,因此从中间去除一个非8的数字: 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100 逻辑类似,但取反(即,我们希望前导1s而不是前导9s)的最小数字。 这是一个较小的示例:(1, 10, 5)。 我们构造范围12345678910并确定5可以删除的位数,以保留最大可能的数字。显然,这意味着我们要最大化前导位数,因为我们不能影响输出的长度。因此,如果我们删除12345,我们将剩下678910,这就是我们可以做的最大的事情。最小化是有点棘手的,因为我们可以取中间的数字,而123410尽可能保留最小。 对于(20, 25, 11),结果相当无聊,因为5和1。 最后,排除答案试图前导零,(9, 11, 3)使91011这反过来产量91和10作为最大和最小的。 I / O和规则 如果更容易/更短,您可以编写两个程序/函数-一个用于最大的程序,或者一个用于最小的程序-在这种情况下,您的分数是这两部分的总和。 输入和输出可以通过任何方便的方法给出。 可以假定输入符合您语言的本机数字类型,但是,不能假定级联数字或输出都不能满足要求。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。

25
计算上限Divmod
任务 给定两个正整数(DIVID Ë次和divis ö R),计算q uotient和- [R emainder。 通常,它将被计算为e = o*q+rwhere q*o&lt;=e和0&lt;=r&lt;o。 对于这个挑战,它仍然e = o*q+r不过q*o&gt;=e和-o&lt;r&lt;=0。 例如e=20和o=3,通常是20/3 -&gt; 20=3*6+2,因为18&lt;=20和0&lt;=2&lt;3。这将是20/3 -&gt; 20=3*7-1地方21&gt;=20和-3&lt;-1&lt;=0 测试用例 Input -&gt; Output 20, 3 -&gt; 7, -1 10, 5 -&gt; 2, 0 7, 20 -&gt; 1, -13 100, 13 -&gt; 8, -4 您不需要处理o=0。

9
重复数字素数
另一个顺序,另一个挑战。* 定义 素数p是这个序列中的一个,我们称它为A,如果十进制扩展中的每个数字都d为p,则替换d为的d副本,d结果整数仍为素数;不允许为零。 例如,11在此序列中琐碎是(顺便说一下,它是第一个数字)。序列中的下一个是31,因为3331它也是素数。那么53因为55555333也是素数,依此类推。 挑战 给定一个input n,return A(n),即n此序列中的第一个项目。 例子 这是让您入门的前20个学期。这是OEIS上的A057628。 11, 31, 53, 131, 149, 223, 283, 311, 313, 331, 397, 463, 641, 691, 937, 941, 1439, 1511, 1741, 1871 当使用零索引时,表示A(0) = 11,A(1) = 31等。 规则 您可以选择基于零或一的索引;请在答案中指出。 除了返回n第一个元素,您还可以选择返回第一个n条件。 您可以假定输入/输出不会大于您语言的本机整数格式;但是,重复数字的质数可能比您的语言的本机格式大,因此需要加以考虑。 例如,示例1871的最后一个数字的素数为18888888877777771,比标准INT32大很多。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 输出可以发送到控制台,从函数返回,显示在警报弹出窗口中,等等。 禁止出现标准漏洞。 这是代码高尔夫球,因此所有常用的高尔夫规则都适用,并且最短的代码(以字节为单位)获胜。 *公平地说,我想出了序列的前几个术语,只是加上了一些数字,然后去了OEIS来获得序列的其余部分。

21
迭代phi序列
相关:迭代phi(n)函数。 您面临的挑战是计算迭代的phi函数: f(n) = number of iterations of φ for n to reach 1. 哪里φ是欧拉函数。 相关OEIS。 这是它的图形: 规则: 你的目标是输出f(n)从n=2到n=100。 这是代码高尔夫球,因此最短的代码获胜。 您可以检查以下值: 1, 2, 2, 3, 2, 3, 3, 3, 3, 4, 3, 4, 3, 4, 4, 5, 3, 4, 4, 4, 4, 5, 4, 5, 4, 4, 4, 5, 4, …

10
计数斐波纳契轨道
如果将类斐波那契数列定义为f k(n)=(f k(n-1)+ f k(n-2))%k,则对于某些整数k(其中%是模运算符),该序列因为(f k(n-1),f k(n-2))只有k 2个不同的值,所以它将必定是循环的。但是,此周期通常并不包括所有可能的值对,因此根据两个初始值f k(0)和f k(1),我们可能会得到不同的周期。例如,对于k = 2,根据前两个值,我们有以下四种可能性: 0, 0, 0, 0, 0, 0, 0, 0, 0, ... 0, 1, 1, 0, 1, 1, 0, 1, 1, ... 1, 0, 1, 1, 0, 1, 1, 0, 1, ... 1, 1, 0, 1, 1, 0, 1, 1, …

16
指数序列
波兰最古老的盐矿位于Bochnia *,始于1248年,我们可以认为这是一个神奇的数字。从求幂序列中可以看到它等于4位数字。 由于日期实际上是序列中的4位数字,因此我们可以将其延长。我们可以重复此过程,直到达到无穷大。如果我们将其限制为数字,则序列看起来像这样2048 124816326412825651210242048 为了使外观更好一点,我们可以将数字分开: 1|2|4|8|16|32|64|128|256|512|1024|2048 让我们尝试一个比日期更长的自定义序列。假设我们希望它有5位数字-可能性不止一种: 24816 81632 64128 或3位数字: 124 248 816 我们也可以在上面加上3位数字,但是,说一个序列必须至少有两个数字。 *英文维基百科上没有关于此的信息。如果您输入波兰语版本-那就有。如果您参观该矿,工人也会告诉您,该矿始于1248年。 挑战 像上面的示例一样,以2为基数创建一个幂序列。 给定范围为2-27的数字,请输出该序列的所有可能部分(如果需要,可以为2048或更大),且位数等于输入。您无法截断数字,因此输出之类481的无效,因为16被截成两半。 规则: 禁止出现标准漏洞。 您可以假设输入的数字是范围内的数字。 您的程序可以接受大于范围(28+)的输入,但是不会增加/减少得分。 输出中的空格将被忽略。您可以输出like 124或like 4 8 16。 列表中的任何字符应分隔不同的可能性:,./|或换行。 您可以输出为数组。 每种可能性都应至少包括2个不同的数字。 您必须输出序列的一部分,不能混合不相邻的数字,例如:14。 不允许硬编码输出,但是,您可以硬编码包含完整序列的字符串/数字/数组。 输入27应该返回完整的2048序列。 如前所述,请勿减少数字。例如 16必须停留16-您不能使用481-您必须使用4816。 编辑:我可能在那说错了;2048是您的程序应支持的最后一个数字,您可以添加对更大int的支持。 测试用例 输入: 2 12, 24, 48 输入: 3 124, 248, 816 输入: 4 …

4
这个数字怎么样?
费马数是可表示为2 2 x +1且带整数x的正整数。 现在让我们定义一个称为“ Fermat-ness”的数字的属性: 从基数开始,该数的费马性比二的幂的链的长度小一,其中二的幂被扩展以最大化费马性。 非费马数的数字的费马率为零。 因此,17(= 2 2 2 2 0 +1)具有费马能级3。 挑战 给定一个非零正整数作为输入,输出数字的费马性。 规则 您可以采用二进制,十进制,十六进制,大数字等输入形式,也可以采用让您最满意的格式 您的解决方案必须能够处理长度超过64的数字,无论您使用哪种表示形式。 仅非负整数幂。 当然禁止出现标准漏洞。 这是代码高尔夫球,因此最短的答案会获胜。 测试用例 这些是格式input-&gt;output。输入为十六进制以节省空间。 10000000000000000000000000000000000000000000000000000000000000001 -&gt; 2 1000000000000BC00000000000000000000000000000000001000000000000001 -&gt;0 1234567890ABCDEF -&gt; 0 100000000000000000000000000000001 -&gt; 1 5 -&gt; 2 11 -&gt; 3 10001 -&gt; 4 101 -&gt; 1 十进制相同: 115792089237316195423570985008687907853269984665640564039457584007913129639937 …

4
最快近似公约数
总览 在此挑战中,您将获得两个数字,这两个数字的偏移量都比中等大小数字的倍数大。您必须输出一个中等大小的数字,该数字几乎是两个数字的除数,除了很小的偏移量。 涉及的数字大小将由难度参数来参数化l。您的目标是l在1分钟内最大可能地解决问题。 设定 在给定的问题中,将有一个秘密数字,p它将是一个随机l^2(l*l)位数字。将有两个乘数,q1, q2这将是随机l^3位数,并且将有两个偏移量r1, r2,这将是随机l位数。 程序的输入为x1, x2,定义为: x1 = p * q1 + r1 x2 = p * q2 + r2 这是一个用Python生成测试用例的程序: from random import randrange from sys import argv l = int(argv[1]) def randbits(bits): return randrange(2 ** (bits - 1), 2 ** bits) p = randbits(l ** …

1
帮助哥德尔实现β函数[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 哥德尔的β函数采用三个自然数作为参数。 定义为 β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) ) 其中rem(a,b)表示a除以b的整数后的余数。 β引理现在指出: 对于任何自然数序列(k_0,k_1,…,k_n),都有自然数b和c使得对于每个i≤n,β(b,c,i)= k_i。 哥德尔需要帮助找到b并c对于任何给定的输入(k_0, k_1, … , k_n), k_i ∈ ℕ。 编写一个函数,该函数接受一个长度为length的数组n,并用自然数填充,并给出b,c满足该数组的引理的可能输出。 不要用蛮力获得解决方案! (根据我完全不专业的观点,当您首先获得一个数字然后进行计算时,这是蛮力的。这是在猜测数字,然后看猜测是否正确。我想在这里编码的是一种解决方案数,并且不必检查它们是否满足引理,因为它们是故意这样做的。) 用给出的方程式和信息构造它们。最短的代码获胜,如果您这样做,将获得加分,Javascript因为我只是参与其中:) 例: [5, 19, 7, 8] -&gt; (1344595, 19) 1344505 …

13
顽强的泰国日历
在泰国日历中,2017年对应于2560年。泰国日历始终比公历提前543年。 细心的编码人员会注意到2560等于2^9 * 5,也就是说它有10个素数。这将不会再发生896年!如果说有十个主要因素,我们就称其为顽强的一年。 编写一个程序,如果根据系统时钟使用泰国日历的当年是顽强的,则输出一个真值,否则输出假值。 测试用例: 如果该程序在2017年运行, true 如果该程序在2018年至2912年的任何一年中运行, false 如果程序在2913年期间运行,true(2913 + 543 = 2^7 * 3^3)

11
解释松散范围
解释松散范围 ListSharp是一种解释型编程语言,具有许多功能,其中一个功能是基于1索引的范围创建器,其工作方式如下: 您可以将范围定义为(INT) TO (INT)或仅定义(INT)两个int可以从min到max int32值的范围 然后,您可以使用这些范围来提取数组的元素,而不必担心会超出其边界 因此: 1 TO 5 产生: {1,2,3,4,5} 3 产生: {3} 范围可以使用AND运算符相加 1 TO 5 AND 3 TO 6 产生: {1,2,3,4,5,3,4,5,6} 记住这也适用于负数 3 TO -3 产生: {3,2,1,0,-1,-2,-3} 挑战如下: 输入值 字符数组和先前定义的range子句作为字符串 输出量 范围中基于1索引位置的元素(不存在/负索引会转换为空字符) 如何取胜 作为代码高尔夫球挑战,您应该创建具有最少字节数的程序以获胜 有人指出不存在空字符,因此您应该忽略它们(我仅在此处显示它们是为了使它们更易于理解,但却使人感到困惑) 测试用例: input array is: {'H','e','l','l','o',' ','W','o','r','l','d'} range clause: "1 TO …
13 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 

4
我的“钥匙孔”让我感到无聊!帮我找到最小的按键
感谢@ Agawa001提出了这个问题。 说明 我的新“键盘孔”只有2个按钮,分别是+和-。 内存中的数字从开始0。 每次连续按+或,-将精确地增加/减少内存连续被按下的次数。 因此,如果按+4次,则第一次加1,第二次加2,第三次加3,第四次加4,为您10(十)。 现在,如果您按-3次,则第一次按1,第二次为2,第三次为3,剩下的是4(四)。 TL; DR 给定一个字符串+和-,请在每次更改字符时将其分开。然后,每个生成的m个+符号字符串将第m个三角形数相加,而n个-符号的每个字符串将第n个三角形数相减。 演练 现在,如果您仍然不了解,我将向您展示如何+++--+--创建1。 Program | Counter | Memory ---------------------------- | 0 | 0 + | +1 | 1 ++ | +2 | 3 +++ | +3 | 6 +++- | -1 | 5 +++-- | -2 | 3 +++--+ | …

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.