为什么不行?????

  1. 两个质数积

题目ID:9499必做题100分

最新提交:

Wrong Answer

0 分

历史最高:

Wrong Answer

96 分

时间限制: 1000ms

空间限制: 524288kB

题目描述

鱼大大有一个正整数n,他想求n前最大质数与n后最小质数的积。

输入格式

一个正整数 n。

输出格式

n前后两个质数的积。

样例

Input 1

4

Output 1

15

样例解释

当n=4时,n前的最大质数为3,n后的最小质数为5,3*5=15

数据范围

2<n<2312<n<231,且保证两个质数都在int范围内
代码:
#include<bits/stdc++.h>
using namespace std;
bool anne(int x) {
for(int i=2; i<=sqrt(x); i++) {
if(x%i==0)return 0;
}
return 1;
}
int main(){
int n,cnt=0,sum=0,a;
cin>>n;
for(int i=2;i<=n-1;i++){
if(anne(i)==1){
sum==i;
break;
}
}
for(int i=n+1;i<=2147483648;i++) {
if(anne(i)==1){
cnt==i;
break;
}
}
a=sum*cnt;
cout<<a;
return 0;
}

首先,for(int i=2;i<=n-1;i++){改成for(int i=n-1;i>=2;i--),然后sum==i改成sum=i,下面的cnt==i也一样,最后以后请格式化代码,谢谢 :sweat_smile:

寻找小于n的最大质数(从n-1递减),寻找大于n的最小质数(从n+1递增)

然后注意一下longlong

@邵睿杰 为啥是i–?

@武伯龙 递减没学过

最大质数肯定从当前这个数往下枚举啊,咋能从2开始呢

他的意思是把这个改成 for(int i=n-1;i>=2;i--)

1 个赞

WA55分,服了
代码:
#include<bits/stdc++.h>
using namespace std;
bool anne(int x) {
for(int i=2; i<=sqrt(x); i++) {
if(x%i==0)return 0;
}
return 1;
}
int main(){
int n,cnt=0,sum=0,a;
cin>>n;
for(int i=n-1;i>=2;i–){
if(anne(i)==1){
sum=i;
break;
}
}
for(int i=n+1;i<=2147483648;i++) {
if(anne(i)==1){
cnt=i;
break;
}
}
a=sum*cnt;
cout<<a;
return 0;
}

《注意一下long long》

int 肯定不够啊,前面别人发的看一下

AC了,谢谢dalao