首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出哪一个毕达哥拉斯三重角最小

找出哪一个毕达哥拉斯三重角最小
EN

Stack Overflow用户
提问于 2013-10-23 00:49:47
回答 2查看 238关注 0票数 1

信息:a是直角三角形最短腿的长度,b是另一条腿的长度,ab的差值越大,角度越小。这就是:

  • 三重(3,4,5)的差值为4-3=1。
  • 三重(5,12,13)的差值为12-5=7。

因此,最小的角度是在三重(5,12,13)。

我正在编写一个程序,比较定义在一个范围内的所有毕达哥拉斯三元组,并以最小的角度打印这个三元组。到目前为止,我所拥有的是不起作用的,我也不知道我能从这里走到哪里。

代码语言:javascript
复制
#include <stdio.h>

int smallest(int a, int b) {
  int difference = b - a;
  return 0;
}


int main() {

 int a = 0, b = 0, c = 0, n, counter = 1, i = 0;

 printf("Please Enter a Positive Integer: \n");
 scanf("%d", &n);

 for (c = 0; c < n; c++) {
   for (b = 0; b < c; b++) {
     for (a = 0; a < b; a++) {
       if (a * a + b * b == c * c ) {
         printf("%d:\t%d %d %d\n", counter++, a, b, c);
       }
     }
   }
   i = counter - 1;
 }
 printf ("The difference is %d\n", smallest(a, b));
 printf ("There are %d Pythagorean Triples in this range.\n", i);
 return 0;
}

程序刚刚打印出的差是0

我正在寻找要打印的程序,上面的例子是“最小角的三角形是(5,12,13)”。

我知道我必须对这些差异进行分类和比较,但到目前为止,我只知道这些,有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2013-10-23 07:38:40

  1. 你确定你的“信息”是对的吗?因为三重(30,40,50)的差值为10,与(3,4,5)的角度相同。
  2. 您不必进行排序,您必须记住差异/角度/任何最小化的东西,正如注释中已经提到的。此外,您还必须记住'minimal‘(a,b,c)的值,以便稍后打印它们。就像这样: //.如果(a *a+b*b == c*c){ printf(" %d :\t%d %d\n",counter++,a,b,c);//如果使用++counter,则不需要i;如果( minDifference < b-a){ //不要害怕长名为minA = a;minB = b;minC = c;minDifference=b;}//.printf(最小差的三角形为(%d,%d,%d),minA,minB,minC);
票数 0
EN

Stack Overflow用户

发布于 2013-10-23 07:45:18

您的smallest-code在每种情况下都返回0。您确定不想返回difference (甚至b-a)吗?

代码语言:javascript
复制
int smallest(int a, int b) {
  return b-a;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19530872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档