Questions tagged «number-theory»

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

25
莫比乌斯函数
莫比乌斯函数 莫比乌斯函数是重要的数论函数。 您的提交应接受一个正整数,n并返回在处评估的Möbius函数的值n。 定义 莫比乌斯函数μ(n)定义如下: | 1 if n is squarefree and has an even number of distinct prime factors μ(n) = | -1 if n is squarefree and has an odd number of distinct prime factors | 0 otherwise n如果n的质数分解的指数严格都小于2,则称为方自由。(或者:两个分割的幂都不是素数n)。 测试用例 在这里,您可以看到μ的前50个值: 来自维基百科的公共领域图像 默比乌斯函数是OEIS中的序列号A008683。 这些是前77个值: 1, -1, -1, 0, …

17
互素数和pi
介绍 数论以意想不到的联系的形式充满了奇迹。这是其中之一。 如果两个整数除1以外没有其他共同因数,则它们是互质的。给定数N,请考虑从1到N的所有整数。随机抽取两个这样的整数(所有整数在每次抽取时被选择的可能性相同;抽取是独立的且具有替换值)。令p表示两个选定整数互质的概率。然后p趋于6 / π 2 ≈0.6079 ...作为Ñ趋于无穷大。 挑战 这一挑战的目的是将p作为N的函数进行计算。 例如,考虑N =4。从整数1,2,3,4获得16对可能。这些对中的11个是互质的,即(1,1),(1,2),(1,3),(1,4),(2,1),(3,1),(4,1 ),(2,3),(3,2),(3,4),(4,3)。因此,对于N = 4,p为11/16 = 0.6875 。 p的确切值至少需要用四个小数点来计算。这意味着计算必须是确定性的(与蒙特卡洛相对)。但这不必是上面所有对的直接枚举;可以使用任何方法。 可以使用函数参数或stdin / stdout。如果显示输出,则可以省略尾随零。因此例如0.6300可以显示为0.63。它应显示为十进制数字,而不是分数(63/100不允许显示字符串)。 获胜标准是最少的字节。内置函数的使用没有限制。 测试用例 输入/输出(如上所述,只有四个小数是必需的): 1 / 1.000000000000000 2 / 0.750000000000000 4 / 0.687500000000000 10 / 0.630000000000000 100 / 0.608700000000000 1000 / 0.608383000000000

23
找到主要因素
在此任务中,您必须编写一个程序,该程序可以计算数字的素数。输入为自然数1 <n <2 ^ 32。输出是采用以下格式的数字素数的列表。如果指数为1,则必须省略。仅输出质数。(假设输入为131784): 131784 = 2 ^ 3 * 3 * 17 ^ 2 * 19 不需要使用相同数量的空格;可以在适当的地方插入空格。您的程序应在不到10分钟的时间内完成输入。字符数最短的程序获胜。

6
分解高斯整数
一个高斯整数是一个复杂的数字,其实虚部是整数。 像普通整数一样,高斯整数可以以独特的方式表示为高斯素数的乘积。这里的挑战是计算给定高斯整数的素数。 输入:高斯整数,不等于0,也不是单位(即1,-1,i和-i不能作为输入)。使用任何明智的格式,例如: 4-5i -5 * j + 4 (4,-5) 输出:高斯整数列表,它们是质数(即,没有一个可以表示为两个非单位高斯整数的乘积),并且其乘积等于输入数。输出列表中的所有数字都必须是平凡的,即不能为1,-1,i或-i。可以使用任何明智的输出格式。它不必与输入格式相同。 如果输出列表中有多个元素,则可能有几个正确的输出。例如,对于输入9,输出可以是[3,3]或[-3​​,-3]或[3i,-3i]或[-3​​i,3i]。 测试用例,(从此表中获取;每个测试用例2行) 2 1+i, 1-i 3i 3i 256 1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i 7+9i 1+i,2−i,3+2i 27+15i 1+i,3,7−2i 6840+585i -1-2i, 1+4i, 2+i, 3, 3, 6+i, 6+i 不允许使用用于分解高斯整数的内置函数。但是,允许通过内置函数分解普通整数。

13
八枚金币
这是另一个谜题的“对应”,即 Puzzling.SE上的公平之王的八枚硬币。 您可以阅读以上背景拼图。有关此难题的详细信息如下。 创建了一组8种不同值的硬币,国王希望您找出最大的N,以便可以使用不超过8个硬币的组合并免费支付从0到N的任意数量的价格。 例如,(摘自Glorfindel的答案)。如果给出一组值分别为1、2、5、13、34、89、233、610的硬币,则程序应输出1596,因为0到1596(含)之间的每个数字都不能用总和表示给定列表中的8个数字(数字可以重复),而1597不能以这种方式表示。 以数学的方式,如果输入是由8个正整数组成的集合S,则所需的输出N满足对于介于0和N之间的任何数字n的情况,存在x1,x2,x3,...,x8,从而 x1+x2+...+x8=nandx1,x2,...,x8∈{0}∪Sx1+x2+...+x8=nandx1,x2,...,x8∈{0}∪小号x_1 + x_2 + ... + x_8 = n \quad\textrm{and}\quad x_1, x_2, ...,x_8 \in \{0\} \cup S 您的目标是编写一个程序,一个函数或一个片段,以8个数字作为输入,并如上所述输出最大N。 规则: 允许灵活的I / O,因此您的程序可以采用最合适的任何形式进行输入。您可能会假设输入数字的排序方式最适合您的程序。 如果您的程序取决于输入顺序,请在答案中注明 输入是一组8个不同的正整数(无零)。输出是一个非负整数。 如果输入集中没有1,则您的程序应输出0,因为从0到0的任何数字都满足要求。 在输入无效的情况下(集合包含零,负或重复的数字),您的程序可以执行任何操作。 禁止出现标准漏洞。 您的程序应在几分钟后在现代计算机上运行。 测试用例(大部分取自有关“困惑”的链接问题下的答案): [1, 2, 3, 4, 5, 6, 7, 8] => 64 [2, 3, 4, 5, 6, …

23
ASCII艺术八边形
给定输入整数n > 1,输出边长由n字符组成的ASCII八角形。请参阅以下示例: n=2 ## # # # # ## n=3 ### # # # # # # # # # # ### n=4 #### # # # # # # # # # # # # # # # # #### n=5 ##### # # # # # # …
22 code-golf  ascii-art  code-golf  geometry  code-golf  balanced-string  code-golf  cops-and-robbers  code-challenge  cops-and-robbers  code-golf  code-golf  random  cryptography  code-golf  array-manipulation  number  code-challenge  integer  code-golf  math  integer  code-golf  math  math  parsing  image-processing  test-battery  math  number  combinatorics  fastest-code  code-golf  code-golf  math  number-theory  rational-numbers  polynomials  code-golf  math  geometry  code-golf  code-golf  number-theory  primes  factoring  code-golf  restricted-source  code-golf  string  decision-problem  counting  code-golf  math  sequence  fibonacci  code-golf  array-manipulation  counting  code-golf  array-manipulation  number-theory  code-golf  array-manipulation  code-golf  random  code-golf  string  hexadecimal  code-golf  string  code-challenge  sorting  code-golf  number  floating-point  code-golf  sorting  code-golf  decision-problem  fibonacci  code-golf  number  combinatorics  code-golf  string  code-golf  math  code-golf  electrical-engineering  code-golf  javascript  code-golf  base-conversion  code-golf  array-manipulation  matrix  binary-matrix  code-golf  kolmogorov-complexity  python  perl  ruby  code-golf  number  code-golf  optimization  integer-partitions  code-golf  string  code-golf  ascii-art 

11
数字产品序列
这是彭博大学数学家保罗·洛米斯(Paul Loomis)发现的有趣序列。从他关于此序列的页面中: f(n) = f(n-1) + (the product of the nonzero digits of f(n-1)) f(0) = x使用x以10为基数的正整数定义。 因此,从开始f(0)=1,您将获得以下序列 1, 2, 4, 8, 16, 22, 26, 38, 62, 74, 102, 104, ... 到目前为止,如此标准。当您将任何其他整数作为起点时,有趣的属性将起作用,最终该序列会收敛到上述x=1序列中的某个点。例如,从x=3收益率开始 3, 6, 12, 14, 18, 26, 38, 62, 74, 102, ... 这是另外一些序列,每个序列仅显示到到达为止102: 5, 10, 11, 12, 14, 18, …

19
这是一个连续的质数/常数指数吗?
前一段时间,我看了27000的素因数分解: 27000 = 2 3 ×3 3 ×5 3 有两点特别的事情: 连续素数:素数是连续的:2是第一素数,3是第二素数,5是第三素数。 常数指数:每个素数的指数都是相同的(总是3) 用数学表示: 的整数X是一个连续的素数/恒定阶数,如果存在严格的正整数Ñ,ķ,中号,使得X = p Ñ 米 × p Ñ +1 米 ×...× p Ñ + ķ 米,其中p j是第j个素数 您的任务是测试正整数是否满足这些条件。 输入: 正整数> 1,采用任何合理形式。 输出: 两个值之一,其中至少一个必须为常数,指示输入是否为连续质数/恒定指数数。 边缘情况: 素数truthy,作为主要的分解p是p 1 其他可以写为p m(其中p是素数)的数字也是真实的。 规则: 有标准漏洞。 不用担心整数溢出,但是最大为255的数字必须有效。 以字节为单位的最短代码获胜。 测试用例: 真相: 2 3 4 …

15
推倒一些多米诺骨牌!
感谢这个问题的启发 在这个挑战,我们将代表一行多米诺骨牌作为串|,/和\。您将获得一串多米诺骨牌作为输入,并且必须确定它们安定后的样子。这是多米诺骨牌掉落的规则 |左下降的多米诺骨牌左侧的立式多米诺骨牌\也将变为左下降的多米诺骨牌。 |正确的多米诺骨牌的立式多米诺骨牌/也将变成正确的多米诺骨牌。 如果站立的多米诺骨牌介于左\下落的/多米诺骨牌和右下落的多米诺骨牌之间,它将保持站立状态。 重复应用这些规则,直到排列不再更改。 这是单个输入如何得出结论的示例 |||||||\/|||||||\||\|||/||||||\||||| ||||||\\//|||||\\|\\|||//||||\\||||| |||||\\\///|||\\\\\\|||///||\\\||||| ||||\\\\////|\\\\\\\|||////\\\\||||| |||\\\\\////|\\\\\\\|||////\\\\||||| ||\\\\\\////|\\\\\\\|||////\\\\||||| |\\\\\\\////|\\\\\\\|||////\\\\||||| \\\\\\\\////|\\\\\\\|||////\\\\||||| 您的任务是编写查找并输出输入最终结果的代码。您可以假定输入始终有效,并且至少包含2个字符。 这是代码高尔夫球,因此答案将以字节计分,而字节数越少越好。 测试用例 |||/|||| -> |||///// |||\|||| -> \\\\|||| |/||||\| -> |///\\\| ||/|||\| -> ||//|\\| ||\|||/| -> \\\|||//

10
生成数字键友好的数字
受生成键盘友好数字的启发。 背景 许多数字键盘的布局如下: 789 456 123 0 我们将数字的邻域定义为在所示数字键盘上与其正交正交的一组单元格,包括其自身。例如,2的邻居是{1,5,3,0,2},0的邻居是{1,2,0}。在测试用例的上方,下面列出了每个数字的邻域。 我们将小键盘友好数字定义为正整数,其中当以十进制形式编写而没有前导零时,除第一个数字外的每个数字都位于前一个数字附近。 例如, 7856是小键盘的友好数字,因为8在7的附近,5在8的邻居中,6在5的附近。 1201是一个小键盘的友好数字,因为2在1附近,0在2附近,而1在0附近。 82 不是小键盘的友好数字,因为2不在8附近。 802 不是小键盘的友好数字,因为0不在8附近(邻居不会环绕)。 相关OEIS序列。请注意,此相关的序列是不同的,因为它计算0为邻近7的,而不是1和2。 挑战 给定正整数n,返回第- n个或第一个n数字键盘友好数字,其中第一个为1。您可以使用基于0的索引,第0个数字键盘友好数字为1。 邻里 每个数字的邻居在这里列出: 0:{0,1,2} 1:{0,1,2,4} 2:{0,1,2,3,5} 3:{2,3,6} 4:{1,4,5,7} 5:{2,4,5,6,8} 6:{3,5,6,9} 7:{4,7,8} 8:{5,7,8,9} 9:{6,8,9} 测试用例/顺序 这是前100个学期 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 21, 22, …

28
最大素数指数
给定一个整数n >= 2,输出其素数分解中的最大指数。这是OEIS序列A051903。 例 让n = 144。其主要分解为2^4 * 3^2。最大指数是4。 测试用例 2 -> 1 3 -> 1 4 -> 2 5 -> 1 6 -> 1 7 -> 1 8 -> 3 9 -> 2 10 -> 1 11 -> 1 12 -> 2 144 -> 4 200 -> 3 500 …

22
模乘逆
您的任务是给定两个整数,a并b计算模b的模乘法乘法逆(如果存在)。 模的a模逆b是一个c这样的数字ac ≡ 1 (mod b)。b对于任何一对a和,此数字都是唯一的模b。它的存在只有的最大公约数a和b是1。 在维基百科页面的模反元素可以,如果你需要关于主题的更多信息,进行咨询。 输入输出 输入以两个整数或两个整数的列表形式给出。您的程序应输出一个数字,即间隔中的模乘逆0 < c < b,或者一个指示没有逆的值。该值可以是任何值,除了range中的数字之外(0,b),也可以是一个例外。但是,对于没有倒数的情况,该值应该相同。 0 < a < b 可以假设 规则 该程序应在某个时候完成,并应在不到60秒的时间内解决每个测试用例 适用标准漏洞 测试用例 以下测试用例以以下格式提供: a, b -> output 1, 2 -> 1 3, 6 -> Does not exist 7, 87 -> 25 25, 87 -> 7 2, 91 -> 46 …

20
是超级素数吗?
背景 一个超贷是一个素数,其指数中的所有质数的列表也是素数。该序列如下所示: 3、5、11、17、31、41、59、67、83、109、127、157、179、191,... 这是OEIS中的序列A006450。 挑战 给定一个正整数,确定它是否是超质数。 测试用例 2:假 3:正确 4:假 5:是的 7:假 11:是 13:假 17:是 709:是的 851:错误 991:是的 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。

12
反转并添加简并性
介绍 反向和加法听起来很简单,以n相反的顺序将其加到其数字上。(例如234 + 432 = 666)。 如果重复应用此过程,则某些数字最终将达到质数,而某些数字将永远不会达到质数。 例 我目前有 11431代表 11431 is not prime 11431 + 13411 = 24842 which is not prime 24842 + 24842 = 49684 which is not prime 49684 + 48694 = 98378 which is not prime 98378 + 87389 = 185767 which is prime! 这个数字很重要 …

12
分而治之
有时,当我懒散地尝试考虑出现在我面前的数字时,过了一会儿,我意识到这比我想象的要容易。就拿2156例如:它最终发生,我认为这两个21和56是的倍数7,所以肯定2156 = 21 x 100 + 56也是一个倍数7。 您的任务是编写一些代码,以标识由于此类巧合而更易于分解的数字。 更确切地说: 编写一个程序或函数,将正整数n作为输入,如果存在一个除数d(大于1),n可以将其切成两个以产生两个正整数,每个整数都是的倍数d;然后返回一个真值。否则返回假值。 “切成两半”表示您的想法:通常的以10为底的表示形式n在某个点划分为前半部分和后半部分,以产生另外两个以10为底的整数。如果第二个整数的前导零是可以的(但请注意,它必须是一个正整数,所以拆分1230为123和0无效)。 真实值和虚假值可以取决于输入。例如,如果在您选择的语言中有任何非零整数是真实的,那么欢迎您返回除数d或“ 的除数”之一n(或n就此而言)。 例如,集合中至少有两位数字的任何偶数{2, 4, 6, 8}都会产生真实值:只需在第一个偶数之后将其分割即可。同样,例如,任何质数n都会产生伪造的值,任何一位数字也会产生伪造的值。 注意,考虑素数除数就足够了d。 您可以假定输入有效(即正整数)。 这是code-golf,因此以字节为单位的最短代码获胜。但是欢迎使用所有语言的解决方案,因此我们可以争取使用每种语言的最短代码,而不仅仅是整体上最短的代码。 测试用例 (您只需要输出一个真实值或虚假值;下面的注释仅是为了说明。)产生真实值的一些输入是: 39 (3 divides both 3 and 9) 64 (2 divides both 6 and 4) 497 (7 divides both 49 and 7) 990 (splitting into 99 and 0 is …

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.