題目大意:
給一個小於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;
}
進制轉換就不寫了,八仙過海,各顯神通吧。