洛谷題單
第三十四天:4.3(周四)
題目:循環結構–P1217
注意!!!本題的解法在初學階段足矣,使用埃氏篩即可全部AC(高級算法,優化時間復雜度),可以放到后面學,暫且無需深究
代碼
#include<stdio.h>
#include<stdbool.h>
#include<math.h>//判斷是否是回文數
int isprime_palindromes (int n)
{int back_up=n;int sum=0;while(n){//重點的兩個式子,好好理解這個過程sum=sum*10+n%10;n/=10;}if(back_up==sum){return true;}else{return false;}
}//判斷是否是質數(這里采用一種更簡單的方法)
int isprime(int n)
{if(n<2){return false;}for(int i=2;i<=sqrt(n);i++){if(n%i==0) //如果能找到其他因數整除,說明不是素數{return false;}//如果return true 放在循環內,只要有符合的直接結束,就會遺漏一些數字沒有被檢查}return true; //易錯:注意這個語句的位置,邏輯:檢查完循環種所有的數字,如果都沒有可以整除的,就說明是素數}// 第一種方法超時了,遍歷每一個數,如果不是質數就花費了不必要的時間,可以先判斷是否是質數//int main()
//{
// int a,b;
// scanf("%d%d",&a,&b);
// for(int i=a;i<=b;i++)
// {
// for(int j=2;j<i;j++)
// {
// if(i==j)
// {
// if(isprime_palindromes(i))
// {
// printf("%d\n",i);
// }
// }
// if(i%j==0)
// {
// break;
// }
// }
// }
//}int main()
{int a,b;scanf("%d%d",&a,&b);for(int i=a;i<=b;i++){//及時通過優化還是會出現連個測試點TLE,這里需要用更高效的算法才可以了---------埃氏篩法if(isprime(i)&&isprime_palindromes(i)){printf("%d\n",i);}}
}