题解 | #Forever97与寄信#

Forever97与寄信

https://ac.nowcoder.com/acm/problem/14609

思路

先来结论:任一大于2的整数都可写成三个质数之和。(哥德巴赫猜想) 我们可以知道,如果n是一个质数,那答案就是1,否则我们可以暴力枚举质数p,如果n-p也是质数的话答案就是2,否则是3。 当然也可以不那么暴力的枚举,可由两个质数组成的充要条件是n是偶数或者n-2是素数。

代码

#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
//#define int long long
using namespace std;
const int N=1e8+7;
const int mod=1e9+7;

//int read(){	int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=f*-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;}

int t,n,ans; 	
bool judge(int n){
	for(int j=2;j<=sqrt(n);j++)	if(n%j==0){
			return false;
		}
	return true;
}

signed main(){
	cin>>t;
	while(t--){
		cin>>n;
		if(judge(n)) ans=1;
		else if(n%2==0||judge(n-2)) ans=2;
		else ans=3;
		cout<<ans<<"\n";
	}
	return 0;
}
全部评论

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
3
1
分享
牛客网
牛客企业服务