标签: pythagorean

找到毕达哥拉斯三元组,其中a + b + c = 1000

毕达哥拉斯三元组是一组三个自然数,a <b <c,其中,2 + b 2 = c 2

例如,3 2 + 4 2 = 9 + 16 = 25 = 5 2.

恰好存在一个毕达哥拉斯三元组,其中a + b + c = 1000.找到产品abc.

资料来源:http://projecteuler.net/index.php?section = problem&id = 9

我试过但不知道我的代码出错了.这是我在C中的代码:

#include <math.h>
#include <stdio.h>
#include <conio.h>


void main()
{
    int a=0, b=0, c=0;
    int i;
    for (a = 0; a<=1000; a++)
    {
        for (b = 0; b<=1000; b++)
        {
            for (c = 0; c<=1000; c++)
            {
                if ((a^(2) …
Run Code Online (Sandbox Code Playgroud)

c algorithm operators pythagorean

27
推荐指数
8
解决办法
5万
查看次数

无法理解列表理解

我刚开始学习haskell(字面意思,今晚!)而且我在理解列表推导的逻辑方面有点麻烦,更具体地说是<-运算符.了解一些Haskell的一个小例子查找长度小于10的所有元组:

ghci> let triangles = [ (a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10] ]
Run Code Online (Sandbox Code Playgroud)

我最初的理解是这些都会一起增加,但在看到输出后我真的不理解这些列表的递增方法.另一个似乎让我得到的例子是:

ghci> let rightTriangles = [ (a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2]
Run Code Online (Sandbox Code Playgroud)

我真的很感激对这些的一点解释,感谢你对我缺乏haskell情报的耐心.

haskell list-comprehension pythagorean

12
推荐指数
1
解决办法
374
查看次数

知道低能量的所有毕达哥拉斯三元组的有效计算

给定一个斜边(c在典型的方程a*a + b*b = c*c),什么是计算所有可能的整数值的有效途径ab,这样a < b

注:我已经看到了c为大于1e12,从而c*c大于long.MaxValue,从我所知道的,c*c倒是可以进入decimal,但.

c# math pythagorean

7
推荐指数
2
解决办法
3812
查看次数

项目欧拉#9(毕达哥拉斯三胞胎)在Clojure

我对这个问题的回答与C中的这些解决方案非常相似.

有没有人有任何建议让这更多lispy?

(use 'clojure.test)
(:import 'java.lang.Math)

(with-test
  (defn find-triplet-product
    ([target] (find-triplet-product 1 1 target))
    ([a b target]
      (let [c (Math/sqrt (+ (* a a) (* b b)))]
        (let [sum (+ a b c)]
          (cond 
            (> a target) "ERROR"
            (= sum target) (reduce * (list a b (int c)))
            (> sum target) (recur (inc a) 1 target)
            (< sum target) (recur a (inc b) target))))))

  (is (= (find-triplet-product 1000) 31875000)))
Run Code Online (Sandbox Code Playgroud)

clojure pythagorean

6
推荐指数
1
解决办法
959
查看次数

原始地理坐标与图形节点之间的最短路径

我已经实现了一个简单的Dijkstra算法,用于在Java上查找.osm地图上的最短路径.

从.osm文件创建的图形中的路径查找效果非常好.但是,如果用户的当前位置和/或目标不是此图的节点(只是原始坐标),我们如何将这些坐标"链接"到图形以使路径查找工作?

简单直接的解决方案"找到最接近当前位置节点并绘制直线"似乎并不现实.如果我们遇到附图所示的情况怎么办?(UPD) 在此输入图像描述

这里的问题是,在我们开始任何"智能"寻路算法(如Dijkstra's)之前,我们将当前位置与图形"链接",但它只是根据毕达哥拉斯定理的一个愚蠢的公式(斜边是一个斜边)来找到最近的节点.地理坐标和这个公式不是"寻路" - 它不能考虑障碍和节点类型.

换句话说 - 如果B是图中的节点,我们如何找到A和B之间的最短路径,而A不是节点?

您是否听说过此问题的其他解决方案?

java dijkstra geospatial shortest-path pythagorean

5
推荐指数
1
解决办法
1922
查看次数

Lisp中的数组与列表:为什么下面的代码中的列表这么快?

在Project Euler中解决问题75时,我得到了意外的结果。我的代码确实找到了正确的解决方案,但是行为却很奇怪。

我的解决方案包括遍历毕达哥拉斯树(Barning's矩阵)直到达到周界极限,计算周界假定每个值的次数,最后计算仅发生一次的周长。我公认的不整洁但有效的代码是:

(defparameter *barning-matrixes*
   '(#(1 -2  2) #(2 -1  2) #(2 -2  3)
     #(1  2  2) #(2  1  2) #(2  2  3)
     #(-1 2  2) #(-2 1  2) #(-2 2  3)))

(defparameter *lengths* (make-array 1500001 :initial-element 0))

(defun expand-node (n)
"Takes a primitive Pythagorean triple in a vector and traverses subsequent nodes in the the tree of primitives until perimeter > 1,500,000"
   (let ((perimeter (reduce #'+ n)))
   (unless (> perimeter 1500000)
     (let ((next-nodes (mapcar …
Run Code Online (Sandbox Code Playgroud)

math common-lisp discrete-mathematics pythagorean

5
推荐指数
1
解决办法
1083
查看次数

Prolog:毕达哥拉斯三重奏

我有这个代码使用一个上限变量N,它应该终止为毕达哥拉斯三元组的X和Y. 然而它只有在达到上限时才会冻结.不知道如何使用切割来阻止回溯.代码是:

is_int(0).
is_int(X) :- is_int(Y), X is Y+1.
minus(S,S,0).
minus(S,D1,D2) :- S>0, S1 is S-1, minus(S1,D1,D3), D2 is D3+1.

pythag(X,Y,Z,N) :- int_triple(X,Y,Z,N), Z*Z =:= X*X + Y*Y.

int_triple(X,Y,Z,N) :- is_int(S), minus(S,X,S1), X>0, X<N,
                                  minus(S1,Y,Z), Y>0, Y<N.
Run Code Online (Sandbox Code Playgroud)

将被称为,例如,

?- pythag(X,Y,Z,20).
Run Code Online (Sandbox Code Playgroud)

prolog pythagorean failure-slice

4
推荐指数
1
解决办法
2001
查看次数

项目欧拉9了解

这个问题说明:

毕达哥拉斯三元组是一组三个自然数,abc,为此,

a 2 + b 2 = c 2

例如,3 2 + 4 2 = 9 + 16 = 25 = 5 2.

恰好存在一个毕达哥拉斯三元组,其中a + b + c = 1000.找到产品abc.

我不确定它试图问你什么.我们是否试图找到然后将这些数字插入?a2 + b2 = c2a + b + c = 1000

math pythagorean

2
推荐指数
2
解决办法
2227
查看次数

特定的直角三角形在 Cpp 中未被识别为直角

我们的 OOP 老师给了我一个作业。尽管我的代码看起来不错,但我正面临这个问题。

我必须从用户那里获取三角形顶点的坐标,并且必须判断它是否是直角三角形。所以我简单地使用毕达哥拉斯定理来找出它,众所周知使用条件:h * h = b * b + p * p

但令人惊讶的是,这不适用于某些特定的直角三角形。这是一个这样的三角形:

顶点 A: (x, y) = (1, 3)

顶点 B: (x, y) = (1, 1)

顶点 C: (x, y) = (5, 1)

计算完美,我通过打印计算得出了这一点,但仍然不起作用

然后我尝试通过这种方式使用库中的sqrt()函数cmath: h = sqrt(b * b + p * p)

逻辑上是一样的,但它起作用了。

我想明白,为什么之前的方法不起作用?

这是我的代码的简化版本

#include <iostream>
#include <cmath>

using namespace std;

class Vertex {

    double x, y;

public:
    void take_input(char …
Run Code Online (Sandbox Code Playgroud)

c++ cmath sqrt pythagorean

2
推荐指数
1
解决办法
71
查看次数

毕达哥拉斯三胞胎使用python的列表理解

我可以使用for循环找出Pythagorean三元组,如下所示:

def triplet(n): # Find all the Pythagorean triplets between 1 and n (inclusive)
  for a in range(n+1):
    for b in range(a):
      for c in range(b):
        if a*a == b*b + c*c:
          print(a, b, c)
Run Code Online (Sandbox Code Playgroud)

我想使用list comprehension用一行代替它并尝试以下部分:

[a, b, c in range(n+1), range(a), range(b) if a*a == b*b + c*c]
Run Code Online (Sandbox Code Playgroud)

但是,我在结束方括号上得到语法错误.我试图使用简单的括号将列表更改为元组,但没有成功.我可以知道如何做对吗?

list-comprehension pythagorean python-3.x

1
推荐指数
1
解决办法
1107
查看次数