#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; const int MR=1e6+10; bool isp(LL x){ if(x<2) return false; for(LL i=2;i*i<=x;i++){ if(x%i==0) return false; } return true; } int n,a[15],cnt; LL num[15][15]; //上次在s[last]的后面添加了加号 void dfs(int last,LL sum){ if(isp(sum+num[last+1][n])){ cnt++; } for(int i=last+1;i>s; n=s.size(); for(int i=1;i<=n;i++) a[i]=s[i-1]-'0'; for(int i=1;i<=n;i++){ for(int j=i;j<=n;j++){ num[i][j]=num[i][j-1]*10+a[j]; } } dfs(0,0); printf("%d\n",cnt); return 0; }