zoukankan      html  css  js  c++  java
  • HDU1397_Goldbach's Conjecture_素数筛选法

    题目大意:          让你输入n,然后求出n里面可以拆分为多少对素数的和(两个素数可以是相同的)。 解题思路:           先把素数打表,然后用素数筛选法得结果。
    #include
    #include
    using namespace std; 
    int p[8]={4,2,4,2,4,6,2,6};
    
    int num[35000];
    int Prime(int n)//判断素数
    {
        int i=7,j,q;
        if(n==1)//1不是素数,也不是合数
              return 0;
        if(n==2||n==5||n==3)
              return 1;
        if(n%2==0||n%3==0||n%5==0)
               return 0;
        q=(int)sqrt((double)n);
        for(;i<=q;)
        {
            for(j=0;j<8;j++)
    
           {
                if(n%i==0)return 0;
                i+=p[j];
            }
            if(n%i==0)return 0;
        }
        return 1;
    }
    
    void initPrime()
    {
    	memset(num,0,sizeof(num));
    	int end=(int)pow(2.0,15);
    	for(int i=1;i<=end;i++)
    	{
    		if(Prime(i))
    			num[i]=1;
    	}
    }
    int main(void)
    {
    	int n;
    	initPrime();
    	while(cin>>n,n)
    	{
    		int count=0;
    		for(int i=1;i<=n/2;i++)
    		{
    			if(num[i] && num[n-i])
    				count++;
    		}
    		cout<
  • 相关阅读:
    XML 验证器
    XML 浏览器支持
    XML 元素
    查看 XML 文件
    XML 属性
    Android入门之Activity四种启动模式
    XML 简介
    XML 语法规则
    [Android]Thread线程入门3多线程
    XML 验证
  • 原文地址:https://www.cnblogs.com/cchun/p/2520173.html
Copyright © 2011-2022 走看看