zoukankan      html  css  js  c++  java
  • HDU 1397 Goldbach's Conjecture(二分,查找素数)

    题目意思很简单,就是找n=p1+p2的种类数,具体看题目吧。

    次重点是查找一定范围内的素数;

    重点是用二分查找,不然会超时!!!

    #include<stdio.h>
    #include<string.h>
    
    
    int main()
    {
        int n,i,f,j,a[10000],num,s,l,r,mid;
        a[0]=2;s=1;
        for(i=3;i<32770;i=i+2)//这里是打出素数
        {
            f=0;
            for(j=0;j<s;j++)
            {
                if(a[j]*a[j]>i)
                    break;
                if(i%a[j]==0)
                {
                    f=1;
                    break;
                }
            }
            if(f==0)
                a[s++]=i;
        }
        while(scanf("%d",&n),n)
        {
            num=0;
            for(i=0;a[i]*2<=n;i++)
            {
                l=0;r=s;
                while(r>l)//查找时一定要用2分啊!不然超时超到哭!!
                {
                    mid=(r+l)/2;
                    if(a[i]+a[mid]==n)
                    {
                        num++;
                        break;
                    }
                    if(a[i]+a[mid]<n)
                        l=mid+1;
                    if(a[i]+a[mid]>n)
                        r=mid;
                }
            }
            printf("%d
    ",num);
        }
        return 0;
    }
    View Code
    一道又一道,好高兴!
  • 相关阅读:
    字符读取流缓冲区
    Runtime、System类
    字符流和字节流
    将C盘一个文本文件复制到D盘。
    DateDemo
    Collection单列集合 Map双列集合
    泛型
    Collection接口
    String类
    Python代码约定
  • 原文地址:https://www.cnblogs.com/laiba2004/p/3234801.html
Copyright © 2011-2022 走看看