#include "stdio.h"
int fun(int n)
{
int i, j = n, pd = 1;
for (i = 2; i < n; i++) {
if (j % i == 0) {
pd = 0;
}
}
if (pd == 1) {
return j;
}
else
fun(j + 1);
}
void main()
{
int n;
scanf("%d", &n);
printf("%d", fun(n));
}
把j=n改成j=n+1应该就行了
#include "stdio.h"
int fun(int n)
{
int i, j = n+1, pd = 1;
for (i = 2; i < n; i++) {
if (j % i == 0) {
pd = 0;
}
}
if (pd == 1) {
return j;
}
else
return fun(j + 1);
}
void main()
{
int n;
scanf("%d", &n);
printf("%d", fun(n));
}
#include <stdio.h>
using namespace std;
bool func(int n){
if(n < 2) return false;
if(n == 2 || n == 3 || n == 5 || n == 7) return true;
int i;
for(i = 2; i * i <= n; i++){
if(n % i == 0) return false;
}
return true;
}
int main(){
int n;
scanf("%d",&n);
int i;
for(i = n + 1; ; i++){
if(func(i)){
printf("%d\n", i);
break;
}
}
return 0;
}
有用记得采纳嗷
呃我写完发现你的代码是对的,既然j跟n一样那就不用j了呗,直接fun(n+1)不是一样的吗
#include "stdio.h"
int fun(int n)
{
int pd = 1;
while (pd == 1)
{
pd = 0;
n++;
for (int i = 2; i < n; i++)
{
if (n%i == 0)
{
pd = 1;
break;
}
}
if (pd == 0)
return n;
}
}
void main()
{
int n;
scanf_s("%d", &n);
printf("%d", fun(n));
}
以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,帮忙点个采纳!