• HDU-5108-Alexandra and Prime Numbers


    题目链接

    http://acm.hdu.edu.cn/showproblem.php?pid=5108

    这个题目开始想错了,开始我用素数筛选法把1000000内的素数全找出来,大于1000000的数单独判断因为大于1000000得数只有100个,

    结果也超时,

    看超时代码

    #include<stdio.h>
    #include<string.h>
    #include<math.h>

    int prime[1000000];

    int su_shu(__int64 n)
    {
    __int64 k,i;
    k=sqrt(n);
    for(i=2;i<=k;i++)
    if(n%i==0)
    return 0;
    return 1;
    }

    int main(void)
    {
    memset(prime,0,sizeof(prime));
    __int64 i,j;
    __int64 n,k;
    for(i=3; i<1000000; i++)
    if(i%2==0)
    prime[i]=1;
    for(i=3; i<=1000; i++)
    {
    if(prime[i]==0)
    {
    for(j=i+i; j<1000000; j=j+i)
    prime[j]=1;
    }
    }
    while(scanf("%I64d",&n)==1)
    {
    if(n<=1000000)
    {
    if(prime[n]==0)
    {
    printf("1 ");
    continue;
    }
    k=n/2;
    for(i=2;i<=k;i++)
    {
    if(n%i==0)
    {
    if(prime[n/i]==0)
    {
    printf("%d ",i);
    break;
    }
    }
    }
    if(i>k)
    printf("0 ");
    }
    else
    {
    k=n/2;
    for(i=1;i<=k;i++)
    {
    if(n%i==0)
    {
    if(su_shu(n/i))
    {
    printf("%d ",i);
    break;
    }
    }
    }
    if(i>k)
    printf("0 ");
    }
    }
    return 0;
    }

    一直陷入的这种思维中,也没有想出什么好方法来

    正确思维

    显然N/M应该是N的最大质因子,这样才能使得M最小。暴力找到最大质因子后用N除就能算出M了。唯一无解的情况是N=1。

    代码

    #include<stdio.h>
    #include<math.h>
    #include<iostream>
    #include<string.h>
    using namespace std;

    int main(void)
    {
    int n,i,j,k,t,Max;
    while(scanf("%d",&n)==1)
    {
    if(n==1)
    {
    printf("0 ");
    continue;
    }
    k=sqrt(n); t=n;
    Max=1;
    for(i=2;i<=k;i++)
    {
    while(t%i==0)
    {
    t=t/i;
    Max=i;
    }
    }
    Max=max(Max,t);
    printf("%d ",n/Max);
    }
    return 0;
    }

    没想到啊!没想到啊!思维要转换啊!。

  • 相关阅读:
    cuda9.0 中不存在libnppi.so
    深度学习训练踩坑记
    采用代理之后,pip 运行报错socks
    摄像机模型
    段错误:使用opencv打开视频流
    ffmpeg+cuda+opencv
    pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
    【TCP/IP详解】BOOTP:引导程序协议
    【TCP/IP详解】TFTP:简单文件传送协议
    【TCP/IP详解】IGMP Internet组管理协议
  • 原文地址:https://www.cnblogs.com/liudehao/p/4116244.html
Copyright © 2020-2023  润新知