题目描述
输入一个数 x, 请输出 [2,x] 范围内的最大质数
输入描述:
输入一个数 x (2≤x≤2147483647)
输出描述:
输出一个数,表示 [2,x] 范围内的最大质数.
这是一道大水题但我还是要讲一下
首先看输入x<2147483647(int范围内) 就直接用int就行了
int x;
再从x到2依次遍历
for(int i=x;i>=2;i--){
}
在写一个判断质数的函数
bool is_prime(int a){
for(int i=2;i<=a/i;i++){
if(a%i==0) return 0;//不是质数
}
return 1;//是质数
}
最后在for循环里判断质数就行了
最最最最最最最最最最最最最最最后上代码
#include<iostream>
using namespace std;
int x;
bool is_prime(int a){
for(int i=2;i<=a/i;i++){
if(a%i==0) return 0;
}
return 1;
}
int main(){
cin>>x;
for(int i=x;i>=2;i--){
if(is_prime(i)==1){
cout<<i;
break;
}
}
return 0;
}
☟新人求个赞(QAQ)☟