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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

問(wèn)題描述

求150以?xún)?nèi)的所有勾股數(shù)。

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

問(wèn)題分析

根據(jù)“勾股數(shù)”定義,所求三角形三邊應(yīng)滿足條件 a2 + b2 = c2。可以在所求范圍內(nèi)利用窮舉法找出滿足條件的數(shù)。

算法分析

采用窮舉法求解時(shí),最容易想到的一種方法是利用3個(gè)循環(huán)語(yǔ)句分別控制變最a、b、c的取值范圍,第1層控制變量a,取值范圍是1?100。在a值確定的情況下再確定b值,即第2層控制變量b,為了避免結(jié)果有重復(fù)現(xiàn)象,b的取值范圍是a+1?150。a、b的值已確定,利用窮舉法在b+1?150范圍內(nèi)一個(gè)一個(gè)的去比較,看當(dāng)前c值是否滿足條件 a2?+ b2?= c2,若滿足,則輸出當(dāng)前a、b、c的值,否則繼續(xù)尋找。主要代碼如下:

//...

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)? /*判斷三個(gè)變量是否滿足勾股數(shù)條件*/

//...

但是上述算法的效率比較低,根據(jù) a2 + b2 = c2 這個(gè)條件,在a、b值確定的情況下,沒(méi)必要再利用循環(huán)一個(gè)一個(gè)去尋找c值。若a、b、c是一組勾股數(shù),則 a2 + b2 的平方根一定等于c,c的平方應(yīng)該等于a、b的平方和,所以可將的平方根賦給c,再判斷c的平方是否等于。根據(jù)“勾股數(shù)”定義將變量定義為整型,a2 + b2 的平方根不一定為整數(shù), 但變量c的類(lèi)型為整型,將一個(gè)實(shí)數(shù)賦給一個(gè)整型變量時(shí),可將實(shí)數(shù)強(qiáng)制轉(zhuǎn)換為整型(舍棄小數(shù)點(diǎn)之后的部分)然后再賦值,這種情況下得到的c的平方與原來(lái)的的值肯定不相等,所以可利用這一條件進(jìn)行判斷。

下面是完整的代碼:

#include

#include

int main()

{

int a, b, c, count=0;

printf("150以?xún)?nèi)的勾股數(shù)有:\n");

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

/*求150以?xún)?nèi)勾股數(shù)*/

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;

}

運(yùn)行結(jié)果:

150以?xún)?nèi)的勾股數(shù)有:

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。