題目:

 

編寫一個VI,讓使用者輸入任意正整數(小於10000),然後找出裡面所有的同構數(注:0也是同構數,千萬不要忘記)

 

同構數的定義是會出現在它的平方的右邊的數,例如5*5=25(5在25的右邊),6×6=36(6在36的右邊),因此5和6都是同構數。而8*8=64,因此8就不是同構數。又如25*25=625,那麼25也是同構數


我對這個題目只純粹研究如何以簡單易懂的方式來做這一題

 

比較簡單的做法是用暴力解題法,用迴圈從0到指定數值去一一計算比對,找出符合同構數的數值

 

所以一開始程式是用For Loop迴圈來處理,又因為0也算是同構數,所以廻圈的執行次數要設定成指定數值加1,才能算到指定數值

 

再來是如何比對平方後的右邊的數,因為指定的數值幾位數並不一定,必需讓程式自動從平方後的數值右邊去分離出同位數的數

 

用的方法是先把計算的數值和平方後的數值轉成文字,接著把2個文字字串反轉,這樣做就只要將平方後的數值文字從頭取出和計算數值相同長度的字串比對即可,可以省掉一些計算的問題

 

最後只要將符合的數輸出即可,這裡用插入數值到陣列的方法處理

 

 

完成的程式

20100610-02  

 

20100610-01  

,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()