• UVa10168 拓展哥德巴赫猜想


    原题链接:UVa10168

    解析:

    • 当n<8时,不能分解为4个素数的和
    • 当n为偶数时,前两个可以分解为2 2,此时n = n-4
    • 当n为奇数时,前两个可以分解为2 3,此时n = n-5,再用哥德巴赫猜想做法做
    • 验证哥德巴赫猜想:离线好数组vis和primes,vis[i]表示i是否为素数,primes存从1到n所有素数,如果primes[i]为素数,且n-primes[i]仍为素数,则n可以分解为这两个素数的和

    代码示例:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    using namespace std;
    const int maxn = 10000000;
    int vis[maxn];
    int primes[maxn];
    int main()
    {
    	int n;
    	memset(vis,true,sizeof vis);
    	int m = sqrt(maxn);
    	int cnt = 0;
    	for(int i = 2;i <= m;i++) if(vis[i])
    		for(int j = i*i;j <= maxn;j += i) vis[j] = false;
    	for(int i = 2;i <= maxn;i++) if(vis[i]){
    		primes[cnt++] = i;
    	}
    	while(~scanf("%d",&n)){
    		if(n < 8){
    			puts("Impossible.");
    			continue;
    		}
    		if(n%2 == 1)	printf("%d %d ",2,3),n-=5;
    		else printf("%d %d ",2,2),n-=4;
    		int i;
    		for(i = 0;i < cnt;i++){
    			if(vis[n-primes[i]]){
    				printf("%d %d
    ",primes[i],n-primes[i]);
    				break;
    			}
    		}
    		if(i == cnt)	puts("Impossible.");
    	}
    	return 0;
    }
  • 相关阅读:
    三、Pandas入门
    二、NumPy入门
    jQuery模拟angular的数据绑定
    ajax里的getJSON的用法
    SQL中关于传递参数为Null的示例
    原生ajax示例
    页面自增加示例
    angular1数据绑定例子
    angular2 工程目录结构介绍
    angular js环境配置
  • 原文地址:https://www.cnblogs.com/long98/p/10352184.html
Copyright © 2020-2023  润新知