1. 程式人生 > >備戰藍橋杯(真題)第五屆第三題(迴文素數)

備戰藍橋杯(真題)第五屆第三題(迴文素數)

                                   迴文素數

10301是個5位的素數。它有個特點,把數字倒過來還是它本身,具有這樣特徵的素數,我們稱之為:迴文素數。
10501
10601
11311
這些都是5位的迴文素數。
請你計算一下,像這樣的5位數的迴文素數,一共有多少個?
請填寫這個表示個數的整數,注意不要寫任何其它多餘的內容,比如說明或解釋文字,也不要列出所有的迴文素數。

分析:這題的方法有很多種,我來介紹其中一個思路,首先判斷10000---99999中有那些素數?

    接著我們分析,那些素數是迴文素數?

   在分析迴文素數的時候,我們知道,第一位和第五位相同    ,第二位和第四位相同----這是解決本題的關鍵

public class C {

	public static void main(String[] args) {
    int s=0;  //計數 
	for(int i=10000;i<=99999;i++)
	{
		if(f(i)==1)
		{
			//System.err.println(i);
			if(f2(i)==1)
			{
				System.out.println(i);
				s++;
				System.out.println(s);
			}
		}
	}
		
	}
	
	public static int f(int n)  //判斷素數的方法
	{
		  for(int i=2;i<n;i++)
		  {
			    if(n%i==0)
			    {
			    	return 0;   //不是素數
			    }
		  }
		  
		  return 1;  //是素數
	}
  
	public static int f2(int n)  //判斷迴文素數的方法
	{
		String s=n+"";   //將int型別轉化為String型別    然後進行比較
	 if(s.substring(0,1).equals(s.substring(4,5))&&s.substring(1,2).equals(s.substring(3,4)))//字串比較用equals
{ return 1; //是迴文素數 } return 0; //不是迴文素數 } }