Questions tagged «number-theory»

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

14
数组转义-离开那里
有一天,您醒来只是发现自己陷入了阵列。您尝试走出那里,同时获取一个索引,但是似乎还有其他规则: 该数组完全用自然数填充。 如果发现自己在索引上n,请转到该索引array[n],除了: 如果您发现自己n是素数索引,则可以array[n]退后一步 示例:您4从此数组中的index开始(起始索引为0): array = [1,4,5,6,8,10,14,15,2,2,4,5,7]; -----------------^ you are here 由于您所在的字段的值为,因此第一步8将进入索引8。您登陆的字段包含值2。然后,您进入索引2作为第二步。作为2质数,您需要向后退5步,这是您的第三步。由于没有索引-3,您总共分了3个步骤成功地对数组进行了转义。 您的任务是: 编写一个程序或函数,该程序或函数接受一个数组和一个起始索引作为参数,并输出逃逸该数组的步骤数。如果无法转义数组(例如,[2,0,2]使用start-index 2=>,则不断从index 2转到0),则输出错误的值。您可以使用基于1的索引或基于0的索引,但是请指定要使用的索引。 测试用例 输入: [2,5,6,8,1,2,3], 3 输出: 1 输入: [2, 0, 2], 2 输出: false 输入:[14,1,2,5,1,3,51,5,12,3,4,41,15,4,12,243,51,2,14,51,12,11], 5; 输出: 6 最短的答案将获胜。

2
标准化电话号码
背景 这里的大多数人应该熟悉一些整数基数系统:十进制,二进制,十六进制,八进制。例如,在十六进制系统中,数字abc.de 16表示 a*16^2 + b*16^1 + c*16^0 + d*16^-1 + e*16^-2 但是,也可以使用非整数基数,例如无理数。一旦这样的碱使用黄金比例φ=(1 +√5)/ 2≈1.618 ...。这些定义类似于整数基数。所以一些abc.de φ(其中一个以ê是整数位)将代表 a*φ^2 + b*φ^1 + c*φ^0 + d*φ^-1 + e*φ^-2 请注意,原则上任何数字都可以为负(尽管我们不习惯于此)-我们将以负号表示一个负数~。对于这个问题,我们限制自己,从数字的目的~9来9的,所以我们可以毫不含糊地写(在与之间的波浪线),一个数字作为一个字符串。所以 -2*φ^2 + 9*φ^1 + 0*φ^0 + -4*φ^-1 + 3*φ^-2 将被写为~290.~43。我们称这样的数字为非凡数字。 索号始终可以以标准形式表示,这意味着该表示仅使用数字1和0,而不包含11任何位置,并带有可选的减号表示整个数字为负。(有趣的是,每个整数都有标准形式的唯一有限表示形式。) 非标准格式的表示始终可以使用以下观察结果转换为标准格式: 011 φ = 100 φ(因为φ 2 =φ+ 1) 0200 φ = …

10
查找Rationals的点积
我在朋友家吃晚饭,他们提出了“素数向量空间”的想法。在此空间中,将正整数表示为向量,以使向量中的第n个元素是第n个素数除以该数目的次数。(请注意,这意味着我们的向量具有无限数量的项。)例如20为 2 0 1 0 0 0 ... 因为它的质因子分解是2 * 2 * 5。 由于素因数分解是唯一的,所以每个数字都对应一个向量。 我们可以通过成对添加向量来添加向量。这与将它们关联的数字相乘相同。我们还可以进行标量乘法,这类似于将相关数提高为幂。 问题在于该空间实际上不是矢量空间,因为没有逆。如果继续进行加和逆运算并关闭向量空间,我们现在可以将每个正有理数表示为向量。如果我们保留向量加法表示乘法的事实。那么自然数的倒数就是它的倒数。 例如,数字20具有向量 2 0 1 0 0 0 ... 因此,1/20是其倒数 -2 0 -1 0 0 0 ... 如果我们想找到与14/15之类的分数相关的向量,我们将找到14 1 0 0 1 0 0 ... 和1/15 0 -1 -1 0 0 0 ... 并通过执行矢量加法将它们相乘 1 …

6
你迷路了吗?
您的任务是实现整数序列A130826: 一个Ñ是最小的正整数,使得一个ñ - N的是整个多3和的约数的数量的两倍(一个ñ - N)/ 3给出了Ñ 个术语在由弗拉菲乌斯产生的序列的第一个差异约瑟夫斯筛。 迷路了吗?好吧,这实际上很容易。 所述flavius约瑟夫筛定义如下的整数序列。 从正整数序列开始,设置k = 2。 除去每ķ 个序列的整数,开始与ķ 个。 递增k并返回到步骤2。 f n是永不删除的第n 个整数(1索引)。 如果-像往常一样- σ 0(k)的表示整数的正除数的数ķ,我们可以定义一个Ñ为最小的正整数,使得2σ 0((一个ñ - N)/ 3)= F n + 1个 -f n。 挑战 写一个程序或函数,它接受一个正整数Ñ作为输入,并打印或返回一个ñ。 适用标准代码高尔夫球规则。愿最短的代码获胜! 工作的例子 如果我们删除正整数的第二个元素,则剩下 1 3 5 7 9 11 13 15 17 19 21 23 …

30
最小公倍数
一组正整数的最小公倍数A是最小的正整数B,使得每个kin都A存在一个正整数n,使得k*n = B。 给定至少两个正整数作为输入,输出它们的最小公倍数。 规则 允许使用内置程序,但是如果您的解决方案使用一个内置程序,则建议您包括一个不使用GCD / LCM内置程序的替代解决方案。但是,替代解决方案完全不会计入您的分数,因此它是完全可选的。 所有输入和输出将在您的语言的本机表示范围内。如果您的语言本身具有任意大整数的能力,那么您的解决方案必须适用于任意大输入和输出。 测试用例 [7, 2] -> 14 [8, 1] -> 8 [6, 4, 8] -> 24 [8, 2, 1, 10] -> 40 [9, 6, 2, 1, 5] -> 90 [5, 5, 7, 1, 1] -> 35 [4, 13, 8, 8, 11, 1] -> …

20
法鲁洗牌数组
阿法鲁洗牌是经常使用的魔术到“洗牌”甲板的技术。要执行Faro随机播放,您首先将卡座切成相等的两半,然后将这两个半插入。例如 [1 2 3 4 5 6 7 8] 法鲁洗牌是 [1 5 2 6 3 7 4 8] 可以重复多次。有趣的是,如果重复此次数足够多,您将总是回到原始数组。例如: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 8] [1 2 3 4 5 6 7 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  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 

26
数字总和斐波那契
我们都熟悉斐波那契数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765 但是,相反,f(n) = f(n-1) + f(n-2)我们将对前2个条目进行数字求和。 序列应仍以开头0, 1,之后差异会迅速显现。此列表的索引为0,也可以使用索引为1的状态。 f(0) = 0 f(1) = 1 f(2) = 1 # 0 + 1 f(3) = 2 # 1 + 1 f(4) …

8
脆弱的奎因
脆弱的奎因 脆弱的quine是满足通过删除单个字符来组成每个子字符串的属性的quine,在评估时会产生错误。 例如。如果您的程序asdf是木盒,那么它就很脆弱,以下程序必须出错: sdf adf asf asd 您的程序(及其所有子字符串)必须是完全确定性的,并且必须使用相同的语言。就此挑战而言,即使最终未产生错误,陷入无限循环(即无法终止)的程序也被视为“产生错误”。 存在标准漏洞,包括通常的quine限制(例如,无法读取自己的源代码)。 例如,print("foo")不是脆弱的。所有这些子字符串必须出错: rint("foo") pint("foo") prnt("foo") prit("foo") prin("foo") print"foo") print(foo") print("oo") print("fo") print("fo") print("foo) print("foo" 不会出错的是: print("oo") print("fo") print("fo") 因此它并不脆弱。 关于藜的重要说明 通过协商一致,任何可能的奎纳必须满足以下条件: 必须有可能识别程序的一部分,该部分对程序的不同部分进行编码。(“不同”表示两个部分出现在不同的位置。) 此外,木盒不得直接或间接访问其自身的源。 例 由于我认为JavaScript的function#toString是“正在读取其自身的源代码”,因此我不允许这样做。但是,如果我不想禁止它,那么这是JavaScript中的一个脆弱的方法: f=(n=b=`f=${f}`)=>(a=(n)==`f=${f}`,n=0,a)&(n!=b)?b:q 测试仪 这是一个程序,在给定程序源代码的情况下,它会生成所有必须出错的程序。 let f = (s) => [...Array(s.length).keys()].map(i => s.slice(0, i) + s.slice(i + 1)).join("\n"); let …
30 code-golf  quine  code-golf  date  code-golf  sequence  code-golf  sorting  file-system  code-golf  code-golf  ascii-art  hexagonal-grid  code-golf  string  arithmetic  code-golf  code-golf  code-challenge  source-layout  code-golf  ascii-art  cellular-automata  code-golf  string  arithmetic  balanced-string  code-golf  number  primes  code-golf  ascii-art  hexagonal-grid  code-golf  string  code-golf  string  code-golf  sequence  code-golf  ascii-art  code-golf  conversion  hexadecimal  code-challenge  restricted-source  code-golf  math  grid  code-golf  string  ascii-art  code-golf  random  minesweeper  code-golf  ascii-art  kolmogorov-complexity  board-game  scrabble  code-golf  ascii-art  code-golf  math  number-theory  decision-problem  code-golf  string  code-golf  natural-language  code-golf  internet  stack-exchange-api  code-golf  code-golf  conversion  code-golf  string  code-golf  math  arithmetic  code-golf  string  whitespace  code-golf  graphical-output  internet  code-golf  string  code-golf  string  random  permutations  code-golf  string  code-golf  string 

30
ASCII三角形
您的任务是编写一个打印ASCII三角形的程序或函数。他们看起来像这样: |\ | \ | \ ---- 您的程序将采用单个数字输入n,并带有约束0 <= n <= 1000。上面的三角形的值为n=3。 ASCII三角形将具有n反斜杠(\)和竖线(|),n+1线和破折号(-),并且每行除最终行外还将具有等于行号(从0开始,即第一行为行0)的空格。 。 例子: 输入: 4 输出: |\ | \ | \ | \ ----- 输入: 0 输出: 在此测试用例中,输出必须为空。没有空格。 输入: 1 输出: |\ -- 输入和输出必须完全是我指定的方式。 这是代码高尔夫球,因此请争取尽可能短的代码!
30 code-golf  ascii-art  code-golf  rubiks-cube  code-golf  path-finding  maze  regular-expression  code-golf  math  rational-numbers  code-golf  kolmogorov-complexity  graphical-output  code-golf  tips  code-golf  string  permutations  code-golf  sorting  base-conversion  binary  code-golf  tips  basic  code-golf  number  number-theory  fibonacci  code-golf  date  code-golf  restricted-source  quine  file-system  code-golf  code-golf  math  code-golf  ascii-art  code-golf  math  primes  code-golf  code-golf  math  matrix  code-golf  string  math  logic  factorial  code-golf  palindrome  code-golf  quine  stateful  code-golf  interactive  code-golf  board-game  code-golf  math  arithmetic  code-golf  string  code-golf  math  matrix  code-golf  math  abstract-algebra  polynomials  code-golf  date  code-golf  string  array-manipulation  sorting  code-golf  game  code-golf  string  code-golf  ascii-art  decision-problem  code-golf  number  sequence  code-golf  code-golf  code-golf  sequence  fibonacci  code-golf  math  geometry  random  code-golf  code-golf  math  decision-problem  fractal  rational-numbers  code-golf  number  number-theory  code-golf  combinatorics  permutations  card-games  code-golf  math  sequence  array-manipulation  fibonacci  code-golf  sequence  decision-problem  graph-theory  code-golf  ascii-art  parsing  lisp  code-golf  string  math  natural-language  logic  code-golf  math  logic  code-golf  string  alphabet  code-golf  string  code-golf  string 

12
太棒了...几乎
如果您曾经在数学课上学习过素数,则可能必须要确定一个数是否是素数。当您仍在学习它们时,您可能已经搞砸了,例如,误以为是39。好吧,不用担心,因为39是一个半素数,即它是两个素数的乘积。 类似地,我们可以将k个几乎素数定义为k个素数的乘积。例如,40是第4个4素数;40 = 5 * 2 * 2 * 2,是4个因子的乘积。 你的任务是写一个程序/函数接受两个整数ñ和ķ作为输入和输出/返回ñ个ķ -almost素数。这是一个代码高尔夫球,因此以字节为单位的最短程序获胜。 测试用例 n, k => output n, 1 => the nth prime number 1, 1 => 2 3, 1 => 5 1, 2 => 4 3, 2 => 9 5, 3 => 27 杂 如果存在封闭形式,则您必须通过简单封闭形式以外的任何方式自己生成素数。

30
我是不是对你没够好?
背景: 当前的“ 完美数字”挑战相当有缺陷和复杂,因为它要求您以涉及数字因子的复杂格式输出。这只是挑战的决策问题转贴。 挑战 通过任何标准输入格式给定正整数,请区分是否为完美整数。 理想数是一个等于其所有适当除数之和的数字(其正除数小于其自身)。例如,是一个正数,因为它的除数是,总和为,而不是一个正数,因为它的除数(1,2,3,4,6)总和为16,不是12。6661,2,31,2,31,2,36661212121,2,3,4,61,2,3,4,61,2,3,4,6161616121212 测试用例: Imperfect: 1,12,13,18,20,1000,33550335 Perfect: 6,28,496,8128,33550336,8589869056 规则 如果存在内存或时间限制,您的程序不必完成较大的测试用例,但从理论上讲,如果有更多的内存/时间,它应该可以。 通过任何允许的输出格式,输出可以是两个不同且一致的值。如果尚不清楚什么代表完美/不完美,请确保在您的答案中指定。

16
原始勾股三元组
(相关) 甲毕达哥拉斯三重是一个列表(a, b, c),其满足等式一个2 + B 2 = C 2。 甲原始毕达哥拉斯三(PPT)为其中a,b和c是全部互质(即,三个元件之间的唯一的公约数是1)。例如,(3, 4, 5)直角三角形是著名的原始毕达哥拉斯三重奏。 挑战 给定输入n,输出n第PPT张。要么, 给定输入n,输出第一个nPPT。 有多种方法可以对这些PPT进行排序,以形成排列良好的列表,从而确定哪个是n第一个。您可以选择所需的任何顺序,只要您可以证明(非正式地)算法可以生成所有可能的唯一PPT。例如,您的代码不应同时输出两者,(3,4,5)并且(4,3,5)由于它们是同一三元组的重复,请不要同时输出。 同样,只要声明使用的是代码,代码是零索引还是单索引都是可以的。 例子 在下面的示例中,我使用单索引,输出nth PPT,然后按最小c,然后最小a,然后最小的顺序进行排序b。 n | output 1 | (3, 4, 5) 2 | (5, 12, 13) 5 | (20, 21, 29) 12| (48, 55, 73) 规则 输入和输出可以任何方便的格式给出。 在您提交的文件中,请说明您的条目是如何排序的,以及您的条目是0索引还是1索引。 您选择的订单无法创建重复项。 完整的程序或功能都是可以接受的。如果是函数,则可以返回输出而不是打印输出。 如果可能,请提供一个在线测试环境的链接,以便其他人可以尝试您的代码! 禁止出现标准漏洞。 …

13
帕斯卡的列总和
这里的大多数人都熟悉Pascal的Triangle。它由连续的行组成,其中每个元素是其两个左上和右上邻居的总和。这是第一5行(从Generate Pascal的三角形借用): 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 我们将采用Pascal的Triangle并对其进行一些求和(哈哈)。对于给定的输入n,输出nPascal三角形的第一行的列和。例如,对于input 5,输出将由 1 1 1 1 2 1 1 3 3 1 [+] 1 4 6 4 1 ---------------------- 1 1 5 4 9 4 5 1 1 因此输出将是[1, 1, 5, 4, 9, …

28
计算超级对数
这应该是一个简单的挑战。 给定一个数字n >= 0,输出的超级对数(或log *,log-star或迭代对数,它们是等效的,因为n对于该挑战永远不会为负。)n。 这是四官能的两个反函数之一。另一个是超级根,这是一个相关的问题。 例子 Input Output 0 0 1 0 2 1 3 2 4 2 ... 15 2 16 3 ... 3814279 3 3814280 4 规则 您可能不需要支持小数。 您需要至少支持输入3814280 = ceiling(e^e^e)。 您可能不对值进行硬编码3814280。(理论上,您的程序必须支持更高的数字。)我希望实现一种算法。 最短的代码胜出。 相关OEIS
29 code-golf  math  code-golf  array-manipulation  sorting  code-golf  math  arithmetic  matrix  code-golf  string  kolmogorov-complexity  code-golf  string  code-golf  math  sequence  arithmetic  recursion  code-golf  math  ascii-art  sequence  code-golf  math  array-manipulation  code-golf  code-golf  kolmogorov-complexity  code-golf  string  code-golf  string  decision-problem  code-golf  array-manipulation  tips  javascript  json  code-golf  math  string  number  number-theory  code-golf  math  sequence  fibonacci  number  arithmetic  fastest-code  integer  code-golf  math  sequence  code-golf  string  file-system  tips  golfscript  code-golf  string  code-golf  string  natural-language  code-golf  string  file-system  code-golf  math  array-manipulation  code-challenge  image-processing  compression  code-golf  math  number  sequence  code-golf  math  combinatorics  regular-expression  code-golf  sequence  pi  code-golf  ascii-art  code-golf  string  array-manipulation  sorting  code-golf  string  graph-theory  code-golf  string  code-golf  string  ascii-art  code-challenge  compression  code-golf  code-golf  math  sequence  number-theory  code-golf  maze  graph-theory  code-golf  math  sequence 

2
椭圆曲线上的加法
椭圆曲线上的加法 免责声明:这对椭圆曲线这一丰富话题没有任何根据。它简化了很多。由于椭圆曲线最近在加密方面引起了媒体的广泛关注,我想提供一些小见识,以了解如何在椭圆曲线上进行“计算”实际上是如何工作的。 介绍 椭圆曲线是(x,y)表单平面中的点集y^2 = x^3+Ax+B。(此外,4A^3+27B^2 ≠ 0为了避免令人讨厌的奇异性。)您可以在任何字段中考虑这些曲线。如果使用实数字段,则曲线可以可视化,看起来像这样: 资源 这些曲线的特殊之处在于它们具有内置的算术运算,类似于加法运算。您可以添加和减去点,并且此操作既是关联的又是交换的(阿贝尔群)。 加法如何工作? 注意:在椭圆曲线上添加点并不直观。之所以定义这种加法,是因为它具有某些不错的属性。很奇怪,但是行得通。 当椭圆曲线形成一个组时,存在一个等于0 的加法标识。也就是说,添加0到任何点都不会改变结果。此加性标识是无穷大的“点”。平面上的所有线都在无穷远处包含此点,因此添加它没有区别。 假设任何给定的线在三个点处可能与曲线相交0,而这三个点的总和为0。牢记这一点,请看一下这张图片。 资源 现在,自然的问题是,什么是P+Q?好吧,如果是P+Q+R = 0,那么P+Q = -R(或者写成R')。哪里-R呢 它是其中R + (-R) = 0,这是在x轴的另一侧,从R使得通过它们的行是垂直的,只有相交R,-R以及0。您可以在此图像的第一部分看到这一点: 资源 您可以在这些图像中看到的另一件事是,一个点与自身的总和意味着该线与曲线相切。 如何找到直线和椭圆曲线的交点 在两个不同点的情况下 通常,只有一条直线穿过两点P=(x0,y0), Q=(x1,y1)。假设它不是垂直的并且两个点是不同的,我们可以将其写为y = m*x+q。当我们想找到与椭圆曲线的交点时,我们可以写成 0 = x^3+Ax+B-y^2 = x^3+Ax+B-(m*x+q)^2 这是三次多项式。这些通常不那么容易求解,但是我们已经知道该多项式的两个零:我们要相加的两个点的两个x坐标x0, x1! 这样,我们就可以分解出线性因子(x-x0),(x-x1)并且剩下第三个线性因子,其根是x点的-坐标R。(-R。因为太多的对称性,请注意,如果R = (x2,y2)随后-R = (x2,-y2)的。-从该组;它不是一个矢量负)。 如果P自己加一点 在这种情况下,我们必须计算处的曲线的切线P=(x0,y0)。我们可以直接写入m,并q在以下方面A,B,x0,y0: 3*x0^2 + …

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.