挺水的题 (刚做过做过哥德巴赫猜想升级版) 无非是多加了一组判断的数,但必须注意循环的次数,循环的太多可能会超时(虽然我的不可能超时)。
- 如果不想看那么多字,可以跳过框里面的
废话直接看代码
在题中已经得知 第一个质数一定是最小的,第二个紧跟,那么后两个质数应当是这个总数的主体(比较大尤其第三个) 第一个质数只是锦上添花凑来的数,所以如果你准备将这三个数都从 2 ~ n 循环的话,第一个质数只需循环个位数就行(其实2和3就够了) 后面两个就随便,废话:(第三个必须循环到n)
上代码:
#include<bits/stdc++.h>
#include<iostream>
#include<stdio.h>
#include<iomanip>
using namespace std;
int tzyx(int x){
int i,z=0;
if(x==1){
return 0;
}
if(x==2){
return x;
}
if(x>2){
for(i=2;i<sqrt(x)+1;i++){
if(x%i==0){
return 0;
}
}
}else{
return x;
}
if(z==0){
return x;
}
}
int main(){
int n,s,x,y,z,op,qb,i,j,k,m;
cin>>n;
for(i=2;i<10;i++){
for(j=2;j<=sqrt(n);j++){
for(k=2;k<=n;k++){
if(tzyx(i)!=0){
if(tzyx(j)!=0){
if(tzyx(k)!=0){
if(i+k+j==n){
cout<<i<<" "<<j<<" "<<k;
return 0;
}
}
}
}
}
}
}
}
|