蓝桥杯省模拟赛 数位和
问题描述
只能被 1 和本身整除的数称为质数。
请问在 1 (含)到 1000000 (含)中,有多少个质数的各个数位上的数字之和为 2323 。
提示: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;
}