码迷,mamicode.com
首页 > 其他好文 > 详细

【TOJ 4705】最大素数

时间:2018-03-08 02:42:29      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:name   soft   output   class   str   sof   blog   div   ros   

 

Description

给定一个数n,问是否可以按从左到右的顺序从其中取出连续的若干位组合成一个素数(大于1,且只能被1和自身整除的数称为素数),若有多种可能,则取所有可能的数中最大的一个。

如在1234中,我们可以取1234,123,234,12,23,34,1,2,3,4,发现素数有2,3,23,其中最大的素数为23。

Input

输入数据有多组,每组占一行,每行一个正整数n(2<=n<=2147483647)。

 

Output

对于每组输出,若存在,则输出最大的素数,否则输出None

Sample input

1234

Sample output

23

 

注意:同位数时要注意取最大值的素数!!

#include<iostream> 
#include<cstring>
#include<cmath>
#include<algorithm>
#include<sstream>
using namespace std;
int prime(int a)
{
    int i;
    if(a==1||a==0)
    return 1;
    for(i=2;i<=sqrt(a);i++)
    {
        if(a%i==0)
        return 1;
    }
    return 0;
}
int ok(int m)
{
    int i,s=1;
    for(i=1;i<=m;i++)
        s=s*10;
    return s;
}
int weishu(int a)
{
    int s=0;
    while(a!=0)
    {
        a=a/10;
        s++;
    }
    return s;
}
int main()
{
    int i,j,t,n,ws,k,p,a,maxx;
    while(scanf("%d",&n)!=EOF)
    {
        t=ws=weishu(n);
        //cout<<"ws="<<ws<<endl;
        k=n;
        maxx=-1;
        for(i=1;i<=ws;i++)
        {
               if(t==10)
               {
                   if(prime(k)==0)
                   {
                       maxx=k;
                       cout<<k<<endl;
                       break;
                }
                t--;
            }
            else
            {
                p=ok(t);
                t--;
                //cout<<"i="<<i<<" p="<<p<<endl;
                k=n;
                for(j=1;j<=i;j++)
                {
                    //cout<<"k="<<k<<endl;
                    if(prime(k%p)==0)
                    {
                        a=k%p;
                        maxx=max(a,maxx);
                    }
                    k=k/10;
                }
                if(maxx!=-1)
                {
                    cout<<maxx<<endl;
                    break;
                }
            }
            if(maxx!=-1)break;
        }
        if(maxx==-1)cout<<"None"<<endl;
    }
    
    return 0;
}

 

【TOJ 4705】最大素数

标签:name   soft   output   class   str   sof   blog   div   ros   

原文地址:https://www.cnblogs.com/kannyi/p/8525640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!