C语言算法小实例3
C語言算法小實(shí)例
三. 一個(gè)整數(shù),它加上100后是一個(gè)完全平方數(shù),再加上168又是一個(gè)完全平方數(shù),請問該數(shù)是多少,計(jì)算并輸出符合條件的整數(shù)?關(guān)于完全平方數(shù)的定義:若一個(gè)數(shù)能表示成某個(gè)整數(shù)的平方的形式,則稱這個(gè)數(shù)為完全平方數(shù)。
思路分析:
一個(gè)數(shù)加上100是m的平方,再加上168又是n的平方,則m等于i+00的開方,n等于i+268的開方。注意sqrt函數(shù)的返回值是float類型,而我們定義的m和n都是整型變量,這里會(huì)進(jìn)行強(qiáng)制轉(zhuǎn)換,將其去掉小數(shù)點(diǎn)后的數(shù)字,只保留整數(shù)。所以如果完全平方數(shù)開方后不是整數(shù)的話,則m和n的平方也不可能等于i+100和i+268。
總結(jié):
1.上方所寫代碼的缺點(diǎn)在于循環(huán)條件計(jì)算量過于巨大,不便于計(jì)算。
2.要充分理解題意,找出相應(yīng)思路,不要因?yàn)檫@是C語言的題目就局限思考,找出正確思路后,才能寫出正確代碼。完全平方數(shù)的定義說明一個(gè)數(shù)能表示成一個(gè)整數(shù)的平方就是完全平方數(shù),注意是整數(shù)才可以,不要只想著如何讓一個(gè)整數(shù)的平方是完全平方數(shù),也可以想想如何讓一個(gè)完全平方數(shù)的開方是整數(shù)。
3.要盡量減少未知變量的個(gè)數(shù),比如本題中可以用完全平方數(shù)的開方表示m和n,而不是只用未知的整型變量m、n來表示完全平方數(shù)。
4.注意:一個(gè)數(shù)的開方并不全是整數(shù),還可能是小數(shù)。所以如果m、n不是整數(shù)的話,二者的平方便和完全平方數(shù)不相等。
正確代碼:
#include<stdio.h> #include<math.h> int main(void) {int i, m, n;printf("輸出完全平方數(shù):\n");for(i = -100000; i < 100000; i++){m = sqrt( i + 100);n = sqrt( i + 100 + 168);if((m * m == i + 100) && (n * n == i + 100 + 168)){printf("%d\n",i);}} return 0; }運(yùn)行結(jié)果:
總結(jié)
- 上一篇: Legacy Code Tool
- 下一篇: 手动查杀病毒的第一课