日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用c语言求20以内的勾股数,C语言求勾股数代码及解析

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用c语言求20以内的勾股数,C语言求勾股数代码及解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

求150以內的所有勾股數。

所謂勾股數,是指能夠構成直角三角形三條邊的三個正整數(a,b,c)。

問題分析

根據“勾股數”定義,所求三角形三邊應滿足條件 a2 + b2 = c2??梢栽谒蠓秶鷥壤酶F舉法找出滿足條件的數。

算法分析

采用窮舉法求解時,最容易想到的一種方法是利用3個循環語句分別控制變最a、b、c的取值范圍,第1層控制變量a,取值范圍是1?100。在a值確定的情況下再確定b值,即第2層控制變量b,為了避免結果有重復現象,b的取值范圍是a+1?150。a、b的值已確定,利用窮舉法在b+1?150范圍內一個一個的去比較,看當前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("150以內的勾股數有:\n");

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

/*求150以內勾股數*/

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

for(b=a+1; b<=150; 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<=150)? /*判斷c的平方是否等于a2+b2*/

{

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

count++;

if(count%4==0)? /*每輸出4組解就換行*/

printf("\n");

}

}

printf("\n");

return 0;

}

運行結果:

150以內的勾股數有:

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? ? ? 15? 112? 113

16? 30? 34? ? ? 16? 63? 65? ? ? 17? 144? 145? ? ? 18? 24? 30

18? 80? 82? ? ? 20? 21? 29? ? ? 20? 48? 52? ? ? 20? 99? 101

21? 28? 35? ? ? 21? 72? 75? ? ? 22? 120? 122? ? ? 24? 32? 40

24? 45? 51? ? ? 24? 70? 74? ? ? 24? 143? 145? ? ? 25? 60? 65

27? 36? 45? ? ? 27? 120? 123? ? ? 28? 45? 53? ? ? 28? 96? 100

30? 40? 50? ? ? 30? 72? 78? ? ? 32? 60? 68? ? ? 32? 126? 130

33? 44? 55? ? ? 33? 56? 65? ? ? 35? 84? 91? ? ? 35? 120? 125

36? 48? 60? ? ? 36? 77? 85? ? ? 36? 105? 111? ? ? 39? 52? 65

39? 80? 89? ? ? 40? 42? 58? ? ? 40? 75? 85? ? ? 40? 96? 104

42? 56? 70? ? ? 42? 144? 150? ? ? 44? 117? 125? ? ? 45? 60? 75

45? 108? 117? ? ? 48? 55? 73? ? ? 48? 64? 80? ? ? 48? 90? 102

48? 140? 148? ? ? 50? 120? 130? ? ? 51? 68? 85? ? ? 51? 140? 149

54? 72? 90? ? ? 55? 132? 143? ? ? 56? 90? 106? ? ? 56? 105? 119

57? 76? 95? ? ? 60? 63? 87? ? ? 60? 80? 100? ? ? 60? 91? 109

63? 84? 105? ? ? 64? 120? 136? ? ? 65? 72? 97? ? ? 66? 88? 110

66? 112? 130? ? ? 69? 92? 115? ? ? 72? 96? 120? ? ? 75? 100? 125

78? 104? 130? ? ? 80? 84? 116? ? ? 81? 108? 135? ? ? 84? 112? 140

87? 116? 145? ? ? 88? 105? 137? ? ? 90? 120? 150? ? ? 96? 110? 146

100? 105? 145

總結

以上是生活随笔為你收集整理的用c语言求20以内的勾股数,C语言求勾股数代码及解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。