#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;
}
只能说你写的有点晕
参考一下吧:
#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);
}