1015. Reversible Primes (20) PAT

題目大意:
給一個小於100000的數判斷是否爲質數,再將他轉換爲n進制的數,2<=n<=10。將轉換後的數倒過來,100->001,然後再將倒過來的數變爲十進制,判斷這個十進制的數是否爲質數。

遇到了一個小坑,0和1不是質數。

這邊判斷質數不要先打表,因爲一系列變化後的那個十進制數可能大於100000,不信可以試一下。

轉換過程中,如果不是全程用字符串的話,記得要用long long型的數字類型,因爲99999轉換爲二進制後,如果用int存儲的話就會超出範圍了。第五個測試案例在這邊卡了一下。

再記一下求素數的方法,比如數x,從i=2開始判斷,看i能否將x整除,一直判斷到i*i>=x爲止,如果這時還沒有整除過,那麼x就是素數了。如果再向後判斷就是在做重複的判斷了,不理解的就自己假設一下吧。

判斷素數函數:

bool isprime(long long num)
{
    if(num<2)
        return false;
    if(num==2 || num==3)
        return true;
    for(int i=2;i*i<=num;i++)
    {
        if(num%i==0)
            return false;
    }
    return true;
}

進制轉換就不寫了,八仙過海,各顯神通吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章