zoukankan      html  css  js  c++  java
  • 素数——HDU3826

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

    判断一个数的约数是否开根号为一个整数,存在输出no,否则yes

    先1-1000,000之间的素数去试除该数,同一个素数有两次以上将其整除的话,是no,结束

    没结束,将余数开根号,看是否是一个整数,是no,否则yes

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

    int ha[1000005],shu[1000005];

    int main()
    {
    int t,i,j,k;
    memset(shu,1,sizeof(shu));
    shu[1]=0;ha[0]=0;
    for(i=2,j=1;i<1000001;i++)
    {
    if(!shu[i])
    continue;
    ha[j++]=i;
    for(k=(i+i);k<1000001;k+=i)
    shu[k]=0;
    }

    scanf("%d",&t);
    __int64 n;
    int T=0;
    while(t--)
    {
    T++;
    printf("Case %d: ",T);

    scanf("%I64d",&n);
    int temp;
    int ok=0,i;
    for(i=1;ha[i]!=0&&n>ha[i];i++)
    {
    temp=0;
    while(n%ha[i]==0)
    {
    n=n/ha[i];
    temp++;
    }
    if(temp==2)
    {
    ok=1;
    break;
    }
    }

    if(ok==1)
    {
    printf("No\n");
    }
    else
    {
    if(((__int64)sqrt(n*1.0+0.00000001)*(__int64)sqrt(n*1.0+0.00000001))==n)
    printf("No\n");
    else
    printf("Yes\n");
    }
    }

    return 0;
    }



  • 相关阅读:
    hdu 1527威佐夫博弈
    hdu 1506
    hdu 1878 欧拉回路
    欧拉回路知识
    hdu 2545 并查集 树上战争
    hdu 2594 kmp
    hdu 1867 kmp匹配
    hdu 2844 多重背包二进制优化
    hdu 4006
    1047
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2418559.html
Copyright © 2011-2022 走看看