蓝桥杯省模拟赛 数位和
问题描述
只能被 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;
}