問題描述
只能被?1?和本身整除的數稱為質數。
請問在?1?(含)到?1000000 (含)中,有多少個質數的各個數位上的數字之和為?23?。
提示:599 就是這樣一個質數,各個數位上的數字之和為?5+9+9=23 。
#include<iostream>
#include<cmath>
using namespace std;int ans;bool prime(int x)
{if(x<2) return 0;if(x==2) return 1;for(int i=2; i<=sqrt(x); ++i){if(x%i==0) return 0;}return 1;
}bool check(int y)
{int sum=0;for(int i=1; i<=6; ++i){sum += y%10;y /= 10; if(y==0) break;}if(sum==23) return 1;return 0;
}int main()
{for(int i=1; i<=1000000; ++i){if(prime(i) && check(i)){ans++;}}cout<<ans;return 0;
}