问题描述

求100以内的所有勾股数。

所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。

问题分析

根据“勾股数”定义,所求三角形三边应满足条件 a2 + b2 = c2。可以在所求范围内利用穷举法找出满足条件的数。

算法分析

采用穷举法求解时,最容易想到的一种方法是利用3个循环语句分别控制变最a、b、c的取值范围,第1层控制变量a,取值范围是1〜100。在a值确定的情况下再确定b值,即第2层控制变量b,为了避免结果有重复现象,b的取值范围是a+1〜100。a、b的值已确定,利用穷举法在b+1〜100范围内一个一个的去比较,看当前c值是否满足条件 a2 + b2 = c2,若满足,则输出当前a、b、c的值,否则继续寻找。主要代码如下:

//...

for(a=l; a<=100; a++) /*确定a的取值*/

for(b=a+l; b<=100; b++) /*确定b的取值*/

for(c=b+l; c<=100; c++) /*确定c的取值*/

if(a*a+b*b==c*c)

printf ("%d\t%d\t%d\n", a, b, c) /*判断三个变量是否满足勾股数条件*/

//...

但是上述算法的效率比较低,根据 a2 + b2 = c2 这个条件,在a、b值确定的情况下,没必要再利用循环一个一个去寻找c值。若a、b、c是一组勾股数,则 a2 + b2 的平方根一定等于c,c的平方应该等于a、b的平方和,所以可将的平方根赋给c,再判断c的平方是否等于。根据“勾股数”定义将变量定义为整型,a2 + b2 的平方根不一定为整数, 但变量c的类型为整型,将一个实数赋给一个整型变量时,可将实数强制转换为整型(舍弃小数点之后的部分)然后再赋值,这种情况下得到的c的平方与原来的的值肯定不相等,所以可利用这一条件进行判断。

下面是完整的代码:

#include

#include

int main()

{

int a, b, c, count=0;

printf("100以内的勾股数有:\n");

printf(" a b c a b c a b c a b c\n");

/*求100以内勾股数*/

for(a=1; a<=100; a++)

for(b=a+1; b<=100; b++)

{

c=(int)sqrt(a*a+b*b); /*求c值*/

if(c*c==a*a+b*b && a+b>c && a+c>b && b+c>a && c<=100) /*判断c的平方是否等于a2+b2*/

{

printf("%4d %4d %4d ", a, b, c);

count++;

if(count%4==0) /*每输出4组解就换行*/

printf("\n");

}

}

printf("\n");

return 0;

}

运行结果:

100以内的勾股数有:

a b c a b c a b c a b c

3 4 5 5 12 13 6 8 10 7 24 25

8 15 17 9 12 15 9 40 41 10 24 26

11 60 61 12 16 20 12 35 37 13 84 85

14 48 50 15 20 25 15 36 39 16 30 34

16 63 65 18 24 30 18 80 82 20 21 29

20 48 52 21 28 35 21 72 75 24 32 40

24 45 51 24 70 74 25 60 65 27 36 45

28 45 53 28 96 100 30 40 50 30 72 78

32 60 68 33 44 55 33 56 65 35 84 91

36 48 60 36 77 85 39 52 65 39 80 89

40 42 58 40 75 85 42 56 70 45 60 75

48 55 73 48 64 80 51 68 85 54 72 90

57 76 95 60 63 87 60 80 100 65 72 97

C语言编程勾股数,C语言求勾股数相关推荐

  1. C语言编程>第三周 ④ 求100之内的素数。

    例题:求100之内的素数. 代码如下: #include <stdio.h> #include "math.h" #define N 101 main() {int i ...

  2. 0.618法C语言编程,c语言编程题--0.618法求最小值

    c语言编程题--0.618法求最小值0 题目: 1.函数f(x)=x+10/x,初始量a=2,b=10,c=0.3 2.步骤:(1)取a1=a+0.382*(b-a),b1=b+0.618*(b-a) ...

  3. c语言编程题总结,c语言编程题总结

    c语言编程题总结 1.求100之内自然数中最大的能被17整除的数. 2.已知a,b,c都是1位整数,求当三位整数abc.cba的和为1333时a.b.c的值. 3.计算并输出200-400之间不能被3 ...

  4. c语言编程模拟选举,C语言编程题精选

    C语言编程题精选 C语言编程题精选 1. 编程实现对键盘输入的英文名句子进行加密.用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变. 2. 编程实现将任意的十 ...

  5. 成都c语言编程培训机构,成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗...

    成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗 首页 > 软件 > 成都学c语言编程 作者:镀金池   发布时间:2018-09-28 14:20 近似带有序布局 ...

  6. 罗定c语言,罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费...

    罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费 首页 > 软件 > 罗定学c语言编程 作者:镀金池   发布时间:2018-10-04 23:40 依照c语言的法则, ...

  7. c语言编程技巧分析,C语言难点及编程技巧分析

    摘要:近些年信息技术发展迅速,社会需要大量专业的计算机人才,C语言是学习计算机知识的专业理论课程,能够为以后的学习打下专业基础.但目前C语言学习受到各方面因素的影响,学习效果不是很理想,很多时候即使努 ...

  8. 单片机c语言编程下载,单片机C语言编程.doc

    单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...

  9. c语言编程所得票数,C语言编程求1X2X3····Xn所得的数末尾有多少个零

    C语言编程求1X2X3····Xn所得的数末尾有多少个零 发布时间:2020-08-10 02:23:57 来源:51CTO 阅读:312 作者:sonissa 参见大数的阶乘 https://blo ...

  10. c语言编程cos近似,C语言7.利用级数展开式计算求cos(x) 的近似值(精度为10-6)

    求圆周率 C语言 输入n值,并利用下列格里高里公式计算并输出圆周率:保留5位小数 #includeintmain(){doublesum=0;inti,n;scanf("%d",& ...

最新文章

  1. Python实现按序合并多个pdf文件
  2. Zend framework重定向的方法
  3. Word2Vec ——gensim实战教程
  4. redis源码学习笔记目录
  5. 前端学习(2524):自定义指令(钩子函数)
  6. java验证码限流_Java实现系统限流
  7. 文本显示变量_【RPA课堂】UiPath中的变量、数据类型和组件
  8. Python多分支实现四则运算器
  9. win10任务栏图标空白的解决方案
  10. delphi remobjects
  11. AD2016 交互式网表 InteractiveHtmlBomForAD插件安装教程
  12. 简单破解闪电视频转换王
  13. CTeX书写规范、WinEdt编写XeLaTeX、数模格式编写总结
  14. python计算图像灰度共生矩阵_灰度共生矩阵-python
  15. python image.open 参数作用,python基础(python Image Library)
  16. 《开端》里的循环,人工智能每天都在进行
  17. 网页视频进度条禁止拖动----解决
  18. 使用git拉取远程仓库代码
  19. uni-app学习笔记-实现一个简单统计图(三)
  20. 红烧茄条————————炒茄子不费油却很好吃的办法

热门文章

  1. 如何让论文中的图进行自动编号
  2. 和差角证明托勒密定理
  3. 网站等保三级怎么做?手续是怎样的?
  4. Apache POI操作Excel文件
  5. 计算机语言与语法,编程语言中语法和语义有什么区别?
  6. 【golang学习总结】10 golang中map用法
  7. FinalShell密码找回
  8. (2020.9.28)面试记录:软件测试实习生--面试记录
  9. C语言程序设计今天下雨了吗,C语言编程模拟下雨by张田浩
  10. RCNN到faster RCNN 简介