一、【问题描述】
只能被 1 和本身整除的数称为质数。
请问在 1 (含)到 1000000 (含)中,有多少个质数的各个数位上的数字之和为 23 。
提示:599 就是这样一个质数,各个数位上的数字之和为 5+9+9=23 。
#include<bits/stdc++.h>
using namespace std;
int c=0;
void fun(int x)
{
for(int i=2;i*i<=x;i++)
{
if(x%i==0) return;//直接结束函数
}
c++;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
for(int a=0;a<=9;a++)
{
for(int b=0;b<=9;b++)
{
for(int c=0;c<=9;c++)
{
for(int d=0;d<=9;d++)
{
for(int e=0;e<=9;e++)
{
for(int f=0;f<=9;f++)
{
if(a+b+c+d+e+f==23)
{
int x=a*100000+b*10000+c*1000+d*100+e*10+f;
fun(x);
}
}
}
}
}
}
}
cout<<c;
return 0;
}
二、【问题描述】
求 12345678901234567890123456789012345678901234567890 除以 2023 的余数。
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
string a="12345678901234567890123456789012345678901234567890";
int b=0;
for(int i=0;i<50;i++)//将以上数字当成字符串存储,共有50个
{
b=b*10+a[i]-'0';
if(b>=2023)
{
b%=2023;
}
}
cout<<b;
return 0;
}