请问还少考虑了哪种情况

img

#include
#include
int JudgePrime(int a, int b)
{
int i = 2;
int ret = 1;
for (; i <= sqrt(b); i++)
{
if (a % i == 0 && b % i == 0)
{
ret = 0;
break;
}
}
return ret;
}
int solve(int n, int k)
{
int count = 0;
int a = 2;
int m = 1;
int b = 3;
while (2 <= a && a < n )
{
m = 1;
while ( (a + m * k) < n && a < b)
{
b = a + m * k;
m++;
if (JudgePrime(a,b))
{
//printf("%d %d\n", a, b);
count++;
}
}
b = a + 2;
a++;
}
return count;
}
int main()
{
int n = 0;
int k = 0;
scanf("%d%d", &n, &k);
int ret = solve(n, k);
printf("%d", ret);
return 0;
}

img

只能说你写的有点晕
参考一下吧:

#include <stdio.h>
#include <stdlib.h>


int func(int a,int b)
{
    if(b%a == 0)
        return 0;
    for(int i=2;i*i<=a;i++)
    {
        if(a%i==0 && b%i==0)
            return 0;
    }
    return 1;
}

int main()
{
    int n,k,count=0,m=0;
    scanf("%d%d",&n,&k);
    int a=2;
    for(;a<n-1;a++)
    {
        m = 0;
        while(a+m*k<n)
        {
            if(func(a,a+m*k))
            {
                printf("%d=%d+%d*%d\n",a+m*k,a,m,k);
                count++;
            }
            m++;
        }
    }
    printf("%d\n",count);
}