首页 > 代码库 > 23:区间内的真素数

23:区间内的真素数

23:区间内的真素数

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。

真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。
例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数。

输入
输入两个数 M 和 N,空格间隔,1 <= M <= N <= 100000。
输出
按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,逗号间隔。如果之间没有真素数,则输出 No。
样例输入
10 35
样例输出
11,13,17,31
来源
元培-From Whf
 1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 #include<cstdio> 5 #include<algorithm> 6 using namespace std; 7 int flag=0; 8 bool vis(int n) 9 {10     for(int k=2;k<n-1;k++)11     {12         if(n%k==0)13         {14             return 0;15         }16     }17     return 1;18 }19 int main()20 {21     int m,n;22     cin>>m>>n;23     for(int i=m;i<=n;i++)24     {25         char bc[1001];26         int a=i;27         if(vis(a)==0)28         continue;29         else30         {31             char ans[101];32             int now=0;33             sprintf(bc,"%d",a);34             int l=strlen(bc);35             int pd;36             for(int j=l-1;j>=0;j--)37             {38                 ans[now]=bc[j];39                 now++;40             }41             //sscanf(pd,"%d",&ans);42             pd=atoi(ans);43             if(vis(pd)==0)44             continue;45             else46             {47                 if(flag==0)48                 {49                     cout<<a;50                     flag=1;51                 }52                 else53                 {54                     cout<<","<<a;55                 }56             }57             58         }59     }60     if(flag==0)61     cout<<"No";62     return 0;63 }

 

23:区间内的真素数