随笔-141  评论-9  文章-3  trackbacks-0

/*
ID: lorelei3
TASK: pprime
LANG: C++
*/


#include 
<fstream>
#include 
<iostream>
#include 
<algorithm>
#include 
<string.h>
#include 
<math.h>

using namespace std;

const int BASE = 10;
const int MAX = 100000;

int ans[MAX];

int isPrime(int a){
    
int n = static_cast<int>(sqrt(a));
    
for(int i=2; i<=n; ++i)
        
if(!(a%i))
            
return 0;
    
return 1;
}



int getPal(int i, int j){
    
/*
    if (j==1)
    {
        char a[30];
        sprintf(a,"%d",i);
        int len=strlen(a);
        for(int k=0;k<len;k++)
           a[k+len]=a[len-k-1];
        a[len*2]='\0';
        char* b;
        return atoi(a);
        //return strtol(a,&b,10);
    }
    if (j==0)
    {
        char a[30];
        sprintf(a,"%d",i);
        int len=strlen(a);
        for(int k=0;k<len;k++)
           a[k+len-1]=a[len-k-1];
        a[len*2-1]='\0';
        char* b;
        return atoi(a);
        //return strtol(a,&b,10);
    }    
*/

    
    
if(j==1){
        
char a[30];
        sprintf(a,
"%d",i);
        
int len=strlen(a);
        
for(int k=0;k<len;k++)
           a[k
+len]=a[len-k-1];
        a[len
*2]='\0';
        
char* b;
        
return atoi(a);
        
//return strtol(a,&b,10);
/*
        char a[30];
        sprintf(a, "%d", i);
        int len = strlen(a);
        for(int k=0; k<len; k++)
            a[k+len] = a[len-k-1]; 
        a[len*2] = '\0';
        return atoi(a);
    
*/
    
        
//char str[20];
    
//    sprintf(str, "%d", i);
    
//    string s(str), t(str);
        
//reverse(t.begin(), t.end());
        
//s.append(t);
        
//return atoi(s.c_str());    
        
    }

    
if(j==0){
        
/*
        char a[30];
        sprintf(a,"%d",i);
        int len=strlen(a);
        for(int k=0;k<len;k++)
           a[k+len-1]=a[len-k-1];
        a[len*2-1]='\0';
        char* b;
        return atoi(a);
        //return strtol(a,&b,10);
*/

        
        
char a[30];
        sprintf(a, 
"%d", i);
        
int len = strlen(a);
        
for(int k=0; k<len; k++)
            a[k
+len-1= a[len-k-1];
        a[len
*2-1= '\0';
        
return atoi(a);
    
        
//char str[20];
        
//sprintf(str, "%d", i);
        
//string s(str), t(str);
        
//t = t.substr(0, t.size()-1);
        
//reverse(t.begin(), t.end());
        
//s.append(t);
        
//return atoi(s.c_str());
        
    }

    
}



int main(){
    
int i,j,a,b;
    ifstream 
in("pprime.in");
    ofstream 
out("pprime.out");

    
in>>a>>b;

    
int t=0;
    
for(i=1; i<=9999++i)
        
for(j=0; j<2++j){
            
int x = getPal(i,j);
            
if(isPrime(x) && x>=&& x<=b){
                ans[t
++= x;
            }

        }


    sort(ans, ans
+t);

    
for(i=0; i<t; ++i)
        
out<<ans[i]<<endl;

    
return 0;
}
posted on 2010-11-09 12:58 小阮 阅读(158) 评论(0)  编辑 收藏 引用 所属分类: USACO

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理