hdu 2710 最大的素数因子

给出一系列的数,判断谁的素数因子最大,然后把它输出

它本身不是素数,但它可以是两个素数的城际,那两个素数就是它的素数因子

#include<stdio.h>
#define M 20000+10
int pre[M];
int main()
{
    int i,j;
    pre[0]=1;
    pre[1]=0;
    for(i=2;i<M;i++)
      {
         for(j=i*i;j<M;j+=i)
           pre[j]=1;      //先进行素数打表,是素数的值为0,否则为1,此处把1当成素数        
      }
      int x,y,n,a;
      while(scanf("%d",&n)!=EOF)
      {
          x=y=0;
          for(i=0;i<n;i++)
          {
             scanf("%d",&a);
             for(j=a;j>0;j--)
              {//不能继续用i,会把上面i的值转变
                 if(!pre[j])//是素数
                 {
                    if(a%j==0 && j>x)//并且是它的素数因子,并且最大
                    {
                       x=j;
                       y=a;
                       break;         
                    }         
                 }              
              }               
          } 
          printf("%d\n",y);                   
      }
      return 0;
}

/*
输出解释:
19是38的最大的素因子。其它没有哪个数有比它更大的素因子了。
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱ycy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值