第一印象——这个,真的和递归有任何关系吗?
3自己是素数,所以就是它自己,所以是1,好像是这样。其它的呢?怎么递归?递归多少得有个递推公式啊?是啥?
3=3+0
从N开始,找不大于N的素数M,然后接着找N-M,就把规模缩小了?这怎么有点像贪心法?这个是全局的最优解么?
写了个这个
#include<iostream>
using namespace std;
bool judge(int n){
int num=0;
for(int i=n-1;i>=2;--i){
if(n%2==0){
++num;
}
}
if(0==num){
return true;
}else{
return false;
}
}
int getNum(int n){
//递归的返回条件
if(0==n){
return 0;
}
//找一下,不大于n的那个最大的素数
int target=-1;
for(int i=n;i>=1;--i){
//判断i是不是素数
if(judge(i)){
target=i;
break;
}
}
return 1+getNum(n-target);
}
int main(){
int input;
cin>>input;
cout<<getNum(input)<<endl;
}
错了..
它这个里面,还有题解
这个,和递归,有关系吗?