B4046 [语言月赛 202410] 寻找质数题解
weizehao20131117 · · 题解
一、核心考点:判断质数。
二、问题分析:对每个数查看是否是质数,是否取余m等r。
三、代码实现与解析:
#include <bits/stdc++.h>
using namespace std;
long long n,m,r,k,cnt;
//判断是否是质数
bool check(int a)
{
//注意1不是质数,也不是合数
if(a==1)return false;
if(a>=2&&a<=3)
{
return true;
}
for(int i=2;i<a;i++)
{
if(a%i==0)return false;
}
return true;
}
int main()
{
cin>>n>>m>>r>>k;
for(int i=n;i>=1;i--)
{
//如果符合孤独数
if(check(i)==true&&i%m==r)
{
cnt++;
//如果是第k个
if(cnt==k)
{
cout<<i;
return 0;
}
}
}
cout<<-1;
return 0;
}
四、时间复杂度:O(n*n)。