欧拉计划问题 233

2024-02-14

我决定解决欧拉计划接下来,但我遇到了一些重大问题!我做了一些分析并取得了一些相当不错的进展,但现在我陷入了困境。这是我的工作:

Lemma 1: 由于圆经过 4 个角点,因此对于任意 n 至少有 4 个解。但对于圆周上的每个点,都可以通过反射发现其他 7 个点。因此总是有8k+4个格点。

Lemma 2: 圆的半径为 (√2)n,圆心为 (n/2, n/2),因此其方程为 (x-n/2)^2 + (y-n/2)^2 = [n/√2]^2。这减少到 x^2+y^2 = n(x+y)。

Lemma 3: 如果 x^2+y^2 = n(x+y) 的解写为 (x, y, z),则另一个解是 (kx, ky, kz)。证明是:

(x+y)n = x^2+y^2

(kx)^2+(ky)^2 = (kx+ky)m
k(x^2+y^2) = (x+y)m
m = kn

这与我的想法一样——我看不出从那里可以去哪里,但它被包括在内,因为它可能很有用。

我的下一个想法是移动圆的中心。将有相同数量的解决方案将其在任何维度上移动为整数。所以当n/2是整数时,所以n=2k,x^2+y^2 = 2*k^2。事实证明,该方程的解与方程 x^2+y^2=k^2 的解一样多(参见斯隆A046109 http://www.research.att.com/~njas/sequences/A046109).

这也提供了一种简单的方法来计算任何n个过孔的解决方案的数量A046080 http://www.research.att.com/~njas/sequences/A046080。如果 4k+1 形式的 n 中素数的幂为 f[0]...f[m],则解的数量为 4*product(2f[i]+1 | i in [0.. .m])。

这使我能够向后工作: 4.product(2f[i]+1 | i in [0...m]) = 420,所以 product(2f[i]+1 | i in [0...m] ) = 105 = 3*5*7。我能够想出这个程序,我认为它可以找到所有 n 的总和,其形式为 2k 且小于 10^11,其中有 420 个圆形格点。答案(我希望如此!)是 257199853438240692。

这是 C 程序:

#include "stdlib.h"
#include "stdio.h"
#include "math.h"
#include "string.h"

#define lim 1000000000L

char prime[lim];
long primes[50000000];
long len = 0;

int main(void)
{
    long i, j;
    for(i = 0; i < lim; i++)
    {
        prime[i] = 1;
    }

    for(i = 2; i < lim; i++)
    {
        if(prime[i])
        {
            for(j = 2*i; j < lim; j += i) prime[j] = 0;
            if((i-1)%4 == 0)
            {
                prime[i] = 2;
                //printf("%li\n", i);
                primes[len++] = i;
            }
        }

        if(i < 1000 || (i < 10000 && i%1000 == 0) || i%10000 == 0) printf("%li, %li\n", i, len);
    }

    printf("primes!\n");

    long a, b, c, v, total = 0, k;
    for(a = 0; a < len; a++)
    {
        v = primes[a]*primes[a]*primes[a];
        if(v > 50000000000L) break;

        for(b = 0; b < len; b++)
        {
            if(b == a) continue;

            v = primes[a]*primes[a]*primes[a]*primes[b]*primes[b];
            if(v > 50000000000L) break;

            for(c = 0; c < len; c++)
            {
                if(c == a) continue;
                if(c == b) continue;

                v = primes[a]*primes[a]*primes[a]*primes[b]*primes[b]*primes[c];
                if(v > 50000000000L) break;

                for(k = 1; k*v <= 50000000000L; k++)
                {
                    if(prime[k] == 2) continue;
                    total += k*v;
                }
            }
        }
    }

    for(a = 0; a < len; a++)
    {
        v = primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a];
        if(v > 50000000000L) break;

        for(b = 0; b < len; b++)
        {
            if(b == a) continue;

            v = primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[b]*primes[b]*primes[b];
            if(v > 50000000000L) break;

            for(k = 1; k*v <= 50000000000L; k++)
            {
                if(prime[k] == 2) continue;
                total += k*v;
            }
        }
    }

    for(a = 0; a < len; a++)
    {
        v = primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a];
        if(v > 50000000000L) break;

        for(b = 0; b < len; b++)
        {
            if(b == a) continue;

            v = primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[a]*primes[b]*primes[b];
            if(v > 50000000000L) break;

            for(k = 1; k*v <= 50000000000L; k++)
            {
                if(prime[k] == 2) continue;
                total += k*v;
            }
        }
    }

    printf("%li\n", 2*total);


    return 0;
}

我们只需要将 420 个圆形格子点的 n 值相加,其形式为 2k+1!然而,这似乎比 n=2k 更难,而且我看不到任何方法。我也有点不确定我对 n 的答案是否正确,因为该方法非常复杂......任何人都可以确认吗?有没有一种简洁的方法而不需要对不同的 n 进行不同的处理?

我完全没主意了!


我最感兴趣的是如何处理 N=2k+1 ,因为当 N=2k 时我可以按照 John Feminella 的建议去做。


提示 1:圆的半径为 n/√2,对于整数 n 来说它永远不是整数,因此 A046080 永远不适用。

提示2:不要费力地滑动圆圈。把它从方格纸上拿起,想一想它,定义它的正方形,以及圆周上未知的兴趣点之间的相互关系。

提示 3:半圆的内切角始终为 90 度。

提示4:一个数可以有多少种写法来表示两个平方和?

在整个过程中充分使用奖励提示:对称!


剧透警告!


在您尝试根据上面的提示解决问题之前,请不要继续阅读

如果这些提示还不够,这里有一些与上面的提示交错的缺失步骤:

提示1.5:你必须改变看待问题的方式,因为你使用的方法是基于一个有缺陷的前提。

提示2.5:考虑正方形顶角之间弧线左侧的一个格点。根据对称性,在其右侧有另一个这样的点,在其正下方还有第三个这样的点。关于这些点之间的距离以及它们形成的三角形,你能说什么?

提示3.5:对于给定的n,如何确定正方形顶角之间的弧的左侧有多少个格点?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

欧拉计划问题 233 的相关文章

  • 如何仅使用单个数组在 JavaScript 中模拟调用堆栈

    我正在看维基百科页面 https en wikipedia org wiki Call stack在调用堆栈上 并尝试理解这个图像 据我所知 哈哈 const memory memory 0 3 top of stack pointer m
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • 用 C++ 生成 AST

    我正在用 C 制作一个解释器 到目前为止我已经有了词法分析器来生成标记 问题是我不确定如何生成 行走 解析树 我正在考虑使用数组数组来制作解析树 但我不确定如何以正确的顺序将标记实际插入到解析树中 我不确定是自上而下 左右还是自下而上 左右
  • 异或交换可以扩展到两个以上的变量吗?

    我一直在尝试将异或交换扩展到两个以上的变量 例如n变量 但我没有得到比这更好的地方3 n 1 对于两个整型变量x1 and x2你可以像这样交换它们 swap x1 x2 x1 x1 x2 x2 x1 x2 x1 x1 x2 所以 假设你有
  • 如何有效地找到距给定点最远的点(从一组点中)?

    我正在寻找一种算法或数据结构来解决以下问题 给你一组点 S 然后你会得到另一个点形式的 Q 查询 对于每个查询 找到集合中距离给定点最远的点 集合中最多有 10 5 个点和 10 5 个查询 所有点的坐标都在 0 到 10 5 范围内 我想
  • GCC的sqrt()编译后如何工作?使用哪种root方法?牛顿-拉夫森?

    只是对标准感到好奇sqrt 来自 GCC 上的 math h 我自己编码的sqrt 使用牛顿拉夫森来做到这一点 是的 我知道 fsqrt 但CPU是如何做到这一点的呢 我无法调试硬件 现代 CPU 中的典型 div sqrt 硬件使用 2
  • 比较批处理文件中的两个数字

    我在这个网站上搜索了我的问题 但没有找到解决我问题的方法 系统为玩家和计算机提供一个从 2 到 12 的随机数 这有 3 部分 X 大于 Y 如果 X 小于 Y 以及当 X 与 Y 相同 当我开始 bat 效果很好 我选择Play Game
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • 需要一种将网络块范围折叠为超集范围列表的算法

    我的数学不及格 我需要一种有效的方法将网络范围缩小为超集 例如如果我输入 IP 范围列表 1 1 1 1至2 2 2 5 1 1 1 2至2 2 2 4 10 5 5 5至155 5 5 5 10 5 5 6至10 5 5 7 我想返回以下
  • 有 JavaScript 的微积分库吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道 JavaScript 的微积分库吗 我做了一些谷歌搜索 但没有想出任何东西 我申请了 Wolf
  • 归并排序中递归树的高度log(n)+1是怎么来的

    我按照 stackoveflow 的建议阅读了一些问题和答案 我正在遵循 cormen 的 算法简介 一书进行自学 那本书里已经解释得很清楚了 但唯一没有解释的是如何在合并排序分析中计算树的高度 如果在后面的章节中对此进行解释的话 我仍然在
  • 用于开始和/或包含搜索的最快字符串集合结构/算法是什么

    我有以下情况 我有一个大的字符串集合 比如说 250 000 平均长度可能是 30 我要做的就是在这些搜索中进行许多搜索 大多数搜索都是 StartsWith 和 Contains 类型的 该集合在运行时是静态的 这意味着选择的集合的初始读
  • 在java中使用BUBBLE SORT对二维字符串数组进行排序

    类似的问题已经被问过 但从来没有关于二维字符串数组 因此在尝试了很长时间之后我找不到我想要的 我正在尝试使用 BubbleSort 对 java 中的 2D 字符串数组进行排序 作为输入 我收到一个二维字符串数组 一个表 以及您应该排序的
  • python:查找围绕某个 GPS 位置的圆的 GPS 坐标的优雅方法

    我有一组以十进制表示的 GPS 坐标 并且我正在寻找一种方法来查找每个位置周围半径可变的圆中的坐标 这是一个例子 http green and energy com downloads test circle html我需要什么 这是一个圆
  • 如何舍入、取整、取整、截断

    如何对 jq jq 1 5 1 a5b5cbe 中的数字进行舍入 取整 取整和截断 例如 与 mass 188 72 我想 mass 188 有地板 mass 189 与天花板和圆形 舍入示例 5 52 gt 6 5 50 gt 5 or
  • 如何对对象进行排序? (画家算法)

    所以我有 4 个矩形形状 我正在尝试应用排序算法 画家算法 https en wikipedia org wiki Painter 27s algorithm 来知道我需要先绘制哪些形状 在 3d 中 然后绘制哪个形状 Note 相机位于右
  • 数学/算法使图像适合屏幕保留纵横比

    我需要数学 算法方面的帮助来拍摄已知尺寸的图像并适合两个屏幕尺寸之一 720 x 480 或 1280 x 1024 图像尺寸来自 XML 文件 但这些尺寸是 Web 尺寸 我还从 XML 中选择了一些图像 这些图像的分辨率可能比 Web
  • 矩阵乘法 - 视图/投影、世界/投影等

    在 HLSL 中有很多矩阵乘法 虽然我了解如何以及在何处使用它们 但我不确定它们是如何导出的或它们的实际目标是什么 所以我想知道是否有在线资源可以解释这一点 我特别好奇将世界矩阵乘以视图矩阵以及世界 视图矩阵乘以投影矩阵背后的目的是什么 您
  • 动态规划 (DP) 中的重叠子问题是什么?

    为了使动态规划适用 问题必须具有两个关键属性 最优子结构 and 重叠子问题 1 https en wikipedia org wiki Dynamic programming 对于这个问题 我们只关注后一个属性 有各种不同的定义重叠子问题

随机推荐

  • 为什么fragment中的生命周期方法是公开的,而activity的生命周期方法是受保护的?

    该活动被保护封装在框架包 android app 和子类中这个链接 https stackoverflow com questions 20161662 why are lifecycle methods in activity class
  • 当父元素有最小高度/最大高度值但没有高度值时,为什么子元素上的 height: 100% 不适用?

    假设我们有以下设置 container background color red width 500px min height 300px child background color blue width 500px height 100
  • 日期范围内的 SQL 分割数

    我有一个表 例如这个数据 ID start date end date amount a1 2013 12 01 2014 03 31 100 我想要一个分割日期的查询 这样我就可以将全年的金额分割出来 如下所示 ID org start
  • c# - 数组从哪里继承(即 .int[] )

    创建数组时 例如int 它是否继承自任何东西 我认为它可能继承自 System Array 但查看编译后的 CIL 后发现并非如此 我认为它可能继承自 System Array 或类似的东西 考虑到您可以调用方法并访问数组上的属性 I e
  • 使用 C 编程频谱图 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试用 C 语言制作音频频谱图
  • 向量数学,求角度

    我试图通过编写一个小型 2D 游戏来学习 XNA 它是一个自上而下的视角 我尝试进行双重移动 使用左右和上下键沿轴移动 以及向右看鼠标光标 以便玩家可以同时奔跑和瞄准 我有一个用于玩家位置的向量 m PlayerPos 一个用于鼠标位置的向
  • 如何在 NestJS 中为每个新的 HTTP 请求使用新实例?

    我有一个 API 并且正在尝试发送请求 这是有效的 但我注意到在收到回复后 这些类并没有被销毁 我目前正在使用 NestJS 但是当我尝试测试时 nodeJS ExpressJS 也遇到了这个问题 我正在使用以下代码 Injectable
  • 如何计算两个地点之间的时差

    我在计算两个时区之间的时差时遇到问题 如果我在位置 A 我知道纬度和经度以及当前时间 我去位置B我知道纬度和经度以及当前时间 如何计算当前两个点之间的时间差 以UTC为单位 首先获取一个可以转换纬度 经度以获取国家 地区和州 省的数据库或库
  • 为什么我的 SQL“NOT IN”子句产生与“NOT EXISTS”不同的结果

    当我期望两个 SQL 查询产生相同的结果时 它们会产生不同的结果 我正在尝试查找没有相应位置的事件的数量 所有位置都有事件 但事件也可以链接到非位置记录 以下查询生成计数 16244 这是正确的值 SELECT COUNT DISTINCT
  • 定义双感叹号?

    我理解双感叹号的作用 或者我认为我理解 但我不确定它是如何在随机对象上定义的 例如下面的代码片段 Assignment a if getAssignment query a return false hasSolution a if a r
  • uint 和 unsigned int 之间的区别?

    有什么区别吗uint and unsigned int 我正在查看此网站 但所有问题都涉及 C 或 C 我想要一个关于C语言的答案 如果相关的话 请注意我在 Linux 下使用 GCC uint不是标准类型 unsigned int is
  • 关闭 GPS 时广播接收器调用了 2 次?

    显现
  • 将 UTF-8 编码的 NSData 转换为 NSString

    我有UTF 8编码NSData来自 Windows 服务器 我想将其转换为NSString对于iPhone 由于数据包含在两个平台上具有不同值的字符 如度数符号 如何将数据转换为字符串 如果数据不是空终止的 您应该使用 initWithDa
  • 当只有插件源可用时,如何在 sbt 项目中使用插件?

    我想使用sbt 斯克鲁奇 https github com bancek sbt scrooge插件 但它的存储库现在不可用 http koofr github com http koofr github com 我想我应该将这个插件的源代
  • 如何在 NLTK 中进行依存解析?

    翻阅 NLTK 书 并不清楚如何从给定的句子生成依存树 本书的相关部分 依存语法子章节 https www nltk org book ch08 html dependencies and dependency grammar给出一个示例图
  • 数组与数组列表有显着差异吗? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中何时使用 ArrayList 而不是 array https stackoverflow com questions 412813 when to use arraylist over ar
  • 混合 C 和 C++...对函数的未定义引用 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在 C 项目中 我尝试调用这个在 C 中定义的函数 int CyBtldr RunAction CyBtldr Action action
  • 什么分布式消息队列支持百万级队列?

    我正在寻找一个分布式消息队列 它将支持数百万个队列 每个队列每秒处理数十条消息 消息会很小 几十个字节 而且我不希望队列变得很长 每个队列最多有几十条消息 但是当系统运行时 队列应该保持相当长的状态空的 我不确定集群中有多少个节点 可能取决
  • 使用指南针指向实际坐标位置而不仅仅是北

    我见过一些这样的例子 但不确定到底如何实现它 例如iPhone 指南针 GPS 方向 https stackoverflow com questions 4130821 iphone compass gps direction 中我需要在
  • 欧拉计划问题 233

    我决定解决欧拉计划接下来 但我遇到了一些重大问题 我做了一些分析并取得了一些相当不错的进展 但现在我陷入了困境 这是我的工作 Lemma 1 由于圆经过 4 个角点 因此对于任意 n 至少有 4 个解 但对于圆周上的每个点 都可以通过反射发