1 条题解
-
0
C++ :
#include<iostream> #include<cmath> using namespace std; int num[50]; int n; int index=0; int maxtotal=-1; //判断素数 bool sushu(int m) { bool r = true; for (int i=2;i<=sqrt(m);i++) { if (m % i == 0){ r = false; break; } } if(m <= 1){ r = false; } return r; } //k为当前下标,sum为总和,total为使用的数字的个数 void fun(int k,int sum,int total) { if (sum==n) { if (total>maxtotal)//更新total { maxtotal=total; } return; } if (sum>n||k>=index)//如果sum超过n,或者下标大于素数个数结束 { return; } fun(k+1,sum+num[k],total+1); fun(k+1,sum,total); } int main() { cin>>n; for (int i=2;i<=n;i++) { if (sushu(i))//如果是素数,将其存进num数组 { num[index++]=i; } } fun(0,0,0); cout<<maxtotal; return 0; }
- 1
信息
- ID
- 2299
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者