如何判斷數是平方數,如何判斷一個數是平方數?

2021-12-25 05:54:57 字數 7114 閱讀 1656

1樓:匿名使用者

完全平方數是這樣一種數:它可以寫成一個正整數的平方

每一個完全平方數要末能被3整除,要末減去1能被3整除。每一個完全平方數要末能被4整除,要末減去1能被4整除。

每一個完全平方數要末能被5整除,要末加上1或減去1能被5整除。

2樓:匿名使用者

完全平方數是這樣一種數:它可以寫成一個正整數的平方。例如,36是6×6,49是7×7。

從1開始的n個奇數的和是一個完全平方數,n2―即1+3+5+7+…+(2n-1)=n2,例如1+3+5+7+9=25=52。每一個完全平方數的末位數是0,1,4,5,6,或9

每一個完全平方數要末能被3整除,要末減去1能被3整除。每一個完全平方數要末能被4整除,要末減去1能被4整除。

每一個完全平方數要末能被5整除,要末加上1或減去1能被5整除。

3樓:匿名使用者

用迴圈××××××××××××××××××

program pf(input,output);

uses crt;

var r:char;

procedure pfjs ;

var a,c,b:longint;

begin

repeat

write ('input a number(n>=0):');

readln (a);

until a>=0;

if a=0 then writeln ('0^2=0') else begin

c:=0;

b:=1;

repeat

c:=c+b;

b:=b+2;

until (c=a) or (exp(ln((b-1)/2)*2)>a);

if c=a then writeln ((b-1)/2:3:0,'^2=',a) else writeln ('no!');

end;

end;

begin

clrscr;

repeat

pfjs;

writeln (again?(y/n)');

r:=readkey;

writeln (r);

until (r='n') or (r='n');

end.

×××××××××××××××××××××××

以上pascal源程式使用了 公式 1+3+5+7+…+(2n-1)=n^2

4樓:

首先您的問題實際上就是判斷一個數是否是完全平方數正如leosongyou提到的

1+3+5+7+…+(2n-1)=n^2

完全平方數是這樣一種數:它可以寫成一個正整數的平方//vc6.0 c++下實現

#include

void main()}}

輸入10000

結果10000=100*100

5樓:匿名使用者

用迴圈判斷不是很容易

然後在看那個自然數是否是另外某一個自然數的平方dim i as integer

dim j as integer

j = 36

for i = 0 to j step 1if j = i * i then

msgbox ("yes")

exit for

end if

next

6樓:匿名使用者

二分查詢,效率 log(n)

bool issqnum( double a )

bool binarysearchsqrt( double a , double begin , double end);

7樓:

使用以下的程式:

bool fn(int n)

用c語言表示怎樣判斷一個數是不是完全平方數

8樓:匿名使用者

複製下列**:

#include

#include

void main()

c++ 簡介:

c++ 是一種靜態型別

權的、編譯式的、通用的、大小寫敏感的、不規則的程式語言,支援過程化程式設計、物件導向程式設計和泛型程式設計。

c++ 被認為是一種中級語言,它綜合了高階語言和低階語言的特點。

c++ 是由 bjarne stroustrup 於 1979 年在新澤西州美利山貝爾實驗室開始設計開發的。c++ 進一步擴充和完善了 c 語言,最初命名為帶類的c,後來在 1983 年更名為 c++。

c++ 是 c 的一個超集,事實上,任何合法的 c 程式都是合法的 c++ 程式。

注意:使用靜態型別的程式語言是在編譯時執行型別檢查,而不是在執行時執行型別檢查。

參考資料

runoob.runoob[引用時間2018-1-3]

9樓:匿名使用者

bool func(double a)

else}

10樓:匿名使用者

#include

#include

void main()

11樓:最愛0號

用一層for迴圈,從1開始,如果i*i == n(假設數是n ),那就退出,到迴圈結束如果還沒有的話,n就不是完全平方數

怎麼才能知道一個數是用多少的平方求出來的?

12樓:月夜玉狼

只須把這個數開方即可。如 12是 √12 的平方。

開平方法的計算步驟如下:

1.將被開方數的整數部分從個位起向左每隔兩位劃為一段,用撇號分開分成幾段,表示所求平方根是幾位數。

2.根據左邊第一段裡的數,求得平方根的最高位上的數。

3.從第一段的數減去最高位上數的平方,在它們的差的右邊寫上第二段陣列成第一個餘數。

4.把求得的最高位數乘以20去試除第一個餘數,所得的最大整數作為試商。

5.用商的最高位數的20倍加上這個試商再乘以試商.如果所得的積小於或等於餘數,試商就是平方根的第二位數;如果所得的積大於餘數,就把試商減小再試。

6.用同樣的方法,繼續求平方根的其他各位上的數。

13樓:風中的紙屑

【參***】

‍這個問題的答案其實很簡單,只是做起來可能有些困難,特別是對那些記性很不好的童鞋。

記得老師我當年學習根號這一章時,為了解決你所說得難題,即給你一個數,能夠迅速找到他的平方根,老師的老師提供了唯一的一個辦法:記住1-20之內每個數的平方結果,最好也記住1-10內數字的立方數。雖然看似很難,但老師當年做到了。

同學,你行嗎?

對於求較大的數的平方根,不借助計算器,基本只能望洋興嘆了。當年對於能夠開的盡的特殊數字,你可以估算。如1275,其平方根應是2位數,末位數字必然是5,再結合頭2位數字12,可以估計出平方根的十位數字是3,所以這個平方根應該是35。

另外,對於較大的數的平方根,有一個求解的方法:筆算開平方法。這個比較麻煩,一般不用。

有興趣的話可以與老師交流。‍

滿意記得采納,不理解歡迎追問。。。

14樓:時代

我們知道80×80=6400, 90×90=8100. 6400<7921<8100, 所以80<根號下7921<90,所以十位數一定是8因為7921的個位數是1,1···9,只有9的²的個位數的1,所以,根號下7921的個位數是9又十位數是8,所以此數是89

15樓:

您好,我們可以借鑑到「夾逼法」的方法作如下分析:

1、首先10²=100、20²=400

2、判斷出100<144<400

3、選擇10-20中間的數字15

4、計算得知15²=225

5、判斷出100<144<225

6、結果是位於10到15之間的

7、我們再次放縮,可以選擇12或13,但考慮到144為偶數,所以選擇12

8、計算得知12 ² = 144

在沒有計算器的情況下,夾逼法可以得到一個較為精確的結果,但步驟較為繁瑣,所以涉及到開方計算建議使用計算器。

演算法:如何判斷一個數是不是完全平方數?

16樓:匿名使用者

pascal語言:

if (round(sqrt(x))*(round(sqrt(x))=x

then write('it is')

else write('it is not');

把這個數開根號,再取整,再平方,若等於原數,則是;反之,則不是。

其實和你的那個方法是差不多的,已經是最簡了,時間複雜度為0.

17樓:匿名使用者

我的c語言程式設計是:

#include "math.h"

main()

18樓:匿名使用者

if sqrt(x) == a then

print 'it is'

else

print 'it is not'

你這是什麼語言來的,這樣的語法.

19樓:受語兒零禎

既然樓上的複製csdn上的說直接找不到好的演算法

你可以反過來算,從1到a/2迴圈,然後求平方,如果其間有數的平方==a,那麼a就是完全平方數.

20樓:回紫安姜涆

dingopeter(peter):

兄弟,做開方運算不過是用數值演算法求的近似解,採用這種方法判斷一個數是否為完全平方數嚴格說來並不合理。完全平方數的有別其他數的一個特徵是:它的因子個數為奇數個,這可以作為判斷的一個準則,而這需要對它進行因子分解,所以我認為它是np-complete。

我不知道是否有好的演算法,但你說的方法在演算法領域是不會得到承認的。

21樓:樂卓手機

完全平方數是這樣一種數:它可以寫成一個正整數的平方.例如,36是6×6,49是7×7.

從1開始的n個奇數的和是一個完全平方數,n2―即1+3+5+7+…+(2n-1)=n2,例如1+3+5+7+9=25=52.每一個完全平方數的末位數是0,1,4,5,6,或9

每一個完全平方數要末能被3整除,要末減去1能被3整除.每一個完全平方數要末能被4整除,要末減去1能被4整除.

每一個完全平方數要末能被5整除,要末加上1或減去1能被5整除.

c語言中如何判斷一個數是完全平方數

22樓:幻翼高達

需要準備的材料分別有:電腦、c語言編譯器。

1、首先,開啟c語言編譯器,新建初始.cpp檔案,例如:test.cpp。

2、其次,在test.cpp檔案中,輸入c語言**:

int a = 64;double c = sqrt(a);

if (c == int(c))

printf("是完全平方數");

else

printf("不是完全平方數");

3、編譯器執行test.cpp檔案,此時成功快速識別出了是不是完全平方數。

23樓:匿名使用者

#include

#include

int main()}

24樓:凌亂心扉

#include

#include

int issquare(int n)

}return a;

}int main()

else

printf("no");

return 0;}

25樓:匿名使用者

對於一個比較大的整數,比如:23916,一共有5位數字,假設它是完全平方數,那麼它的平方根應該是一個3位數,因為100的平方是最小的5位數。

同時,這個平方根應該小於200,因為200的平方是40000比原數大。取箇中間數150,因為已知15的平方是225,所以很容易算出150的平方是22500,比原數小。

同理,算出160的平方是25600,比原數大。所以,如果24346時一個完全平方數,它的平方根應該大於150且小於160。完全平方數,凡是個位為6的,其平方根個位必為4或6。

計算154的完全平方,等於 23716 比 23916 小200,計算156的完全平方,等於 24336 比 23916 大420,所以23916不是完全平方數。

擴充套件資料

應用:有多少個正整數n,使n!+2019是完全平方數,注:n!=1*2*…*n,即n的階乘。

講解思路:這道題屬於完全平方數問題,要判斷一個數是完全平方數,除了嚴格驗證外,目前還沒有完善的方法。但要判斷一個數不是完全平方數,有很多種性質可以用,

這裡採用除以4的餘數來判別。由於n!具有十分特別的性質,因此總的解題思路是:先判斷當n>=4時的情況,然後對n<4時的3個數逐一驗證。

步驟1:

先思考第一個問題,

當n大於等於4時,

n!+2019除以4的餘數是多少。

此時n!=1*2*3*4…*n,

故n!是4的整數倍,

而2019除以4的餘數是3,

因此n!+2019除以4的餘數是3。

步驟2:

再思考第二個問題,

當n大於等於4時,

n!+2019可能是完全平方數嗎。

此時n!+2019是奇數,

如果它是完全平方數,

則存在某自然數k,

使n!+2019=(2k+1)^2

=4k^2+4k+1,

顯然該數除以4的餘數為1,

這與步驟1的結論想矛盾,

因此不是完全平方數。

注:k^2表示k的平方。

步驟3:

再思考第三個問題,

考慮原題目的答案。

從步驟2直到n小於4,

下面對n=1,2,3分別討論:

當n=1時,

n!+2019=2020不是完全平方數;

當n=2時,

n!+2019=2021不是完全平方數;

當n=3時,

n!+2019=2025=45^2,

是完全平方數。

所以原題的答案只有n=3。

如何判斷數是完全平方數如何判斷一個數是完全平方數

對於一個比較大的整數,比如 23916,一共有5位數字,假設它是完全平方數,那麼它的平方根應該是一個3位數,因為100的平方是最小的5位數。同時,這個平方根應該小於200,因為200的平方是40000比原數大。取箇中間數150,因為已知15的平方是225,所以很容易算出150的平方是22500,比原...

如何判斷數是不是素數,如何判斷一個數是不是素數????

方法一 用試除法判斷一個自然數a是不是質數時,用各個質數從小到大依次去除a,如果到某一個質數正好整除,這個a就可以斷定不是質數 如果不能整除,當不完全商又小於這個質數時,就不必再繼續試除,可以斷定a必然是質數 方法二 只要找出x為一個奇數和一個偶數平方差的形式 這是一定的 便可以a2 b2 a b ...

如何判斷數列是發散還是收斂,如何判斷一個數列是發散還是收斂

方法 步驟 認識收斂數列的性質。收斂數列其實是建立在數列極限的定義上的。即內收斂數列的極 容限唯一,有且僅有一個極限。瞭解證明數列數列是發散或收斂的基本方法。一般是反證法居多。學習例題,看題幹解問題。主要看數列的定義和相關關於數列的題設利用極限唯一的定義來證明數列的收斂性。注意 只能利用定義來進行求...