1 solutions

  • 0
    @ 2023-12-21 16:53:18

    难度:

    暴力出奇迹。

    下文中令 n=106n=10^6

    先筛出 nn 以内的质数。

    注意到题目中需要输出 bab-a 最大的一组,相当于输出 aa 最小的一组。

    对于 [6,n][6,n] 内的每个偶数,通过枚举所有质数,来求出这个数对应的解。

    时间复杂度我不会算,但目测不会很大,只跑了 30ms30ms

    #include<bits/stdc++.h>
    using namespace std;
    int n=1e6,a;
    int f[1000100],pr[100100],pc;
    int r[1000100];
    int main(){
    	for(int i=2;i<=n;i++){
    		if(!f[i]) pr[++pc]=i;
    		for(int j=1;j<=pc;j++){
    			if(i*pr[j]>n) break;
    			f[i*pr[j]]=1;
    			if(i%pr[j]==0) break;
    		}
    	}
    	for(int i=6;i<=n;i+=2){
    		for(int j=2;j<=pc;j++){
    			if(f[i-pr[j]]==0){
    				r[i]=pr[j];
    				break;
    			} 
    		}
    	}
    	while(1){
    		scanf("%d",&a);
    		if(a==0) return 0;
    		if(a%2==1){
    			printf("Goldbach's conjecture is wrong.\n");
    		}
    		else printf("%d = %d + %d\n",a,r[a],a-r[a]);
    	}
    }
    
    • 1

    Information

    ID
    202
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    10
    Tags
    # Submissions
    6
    Accepted
    3
    Uploaded By