歌德巴赫猜想 (速筛)

哥德巴赫猜想认为“每一个大于2的偶数,都能表示成两个质数之和”。

给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?

Input

一个偶数N(4 <= N <= 1000000)

Output

输出P和Q。如果有多组解,输出P最小的一组。

Sample Input

10

Sample Output

3 7
#include <cstdio>
using namespace std;
int prime[1000000+5] = { 1,1 };
int main() 
{
	int i, j;
	for( i=2; i<=500000; i++ ){	/*打表标记素数*/ 
		if( prime[i] )
			continue;
		else	/*这里我写成i<=1000000 然后一输入就奔溃*/ 
			for( j=i+i; j<= 1000000; j += i )
				prime[j] = 1;
	}
	int num;
	scanf("%d", &num );
	//num = num /2;	不能这想着这样简化循环,不然会影响下面的num-i,最后加个break就行*/ 
	for( i=2; i<= num; i++ ){
		if( !prime[i] && !prime[num-i] ){
			printf("%d %d\n", i, num-i );	/*输出最小的一组*/ 
			break;
		}
	}
	
	return 0;
}

 

全部评论

相关推荐

07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务