两个质数乘积WA96分

C. 两个质数积

Problem ID: 9499

Contest ID: 5911

必做题

Wrong Answer

96 分

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

输入格式

一个正整数 n。

输出格式

n前后两个质数的积。

输入样例

4

输出样例

15

约定:

n的范围在int范围内,且大于2

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,sum=0;long long b,c,d;
	cin>>n;      
	for(int i=n-1;i>=2;i--)
	{
		sum=0;
		for(int j=2;j<=sqrt(i)+1;j++)
		{
			if(i%j==0)
			{
			   sum++;	
			}
		}
		if(sum==0)
		{
		   b=i;
		   break;
		}	
	}
	int i=n+1;
	while(1){
		sum=0;
		for(int j=2;j<=sqrt(i)+1;j++)
		{
			if(i%j==0)
			{
			   sum++;	
			}
		}
		if(sum==0)
		{
		   c=i;
		   break;
		}	
		i++;
	}
	d=b*c;
	printf("%ld",d);
}
 
1 个赞

没开 long long,另外输出 long long 类型建议用 %lld

2 个赞

这复杂度是假的吧

2 个赞

应该没假

2 个赞

改成%.lld也不行啊

你又没开 longlong。。。

ou。。。。

还是不行。。。。

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long n,sum=0;long long b,c,d;
	cin>>n;      
	for(int i=n-1;i>=2;i--)
	{
		sum=0;
		for(int j=2;j<=sqrt(i)+1;j++)
		{
			if(i%j==0)
			{
			   sum++;	
			}
		}
		if(sum==0)
		{
		   b=i;
		   break;
		}	
	}
	long long i=n+1;
	while(1){
		sum=0;
		for(int j=2;j<=sqrt(i)+1;j++)
		{
			if(i%j==0)
			{
			   sum++;	
			}
		}
		if(sum==0)
		{
		   c=i;
		   break;
		}	
		i++;
	}
	d=b*c;
	printf("%lld",d);
}

帮我解决一下
https://discourse.xinyoudui.com/t/topic/5197?u=%E9%83%91%E6%B6%9E%E5%85%81