为什么会出现这种警告⚠?求大老来回答一下
```c++
#include
#include
bool f(int x)
{
for (int i = 2; i < sqrt(x); i++)
if (x % i == 0)return false;
return true;
}
int main()
{
long long sum = 1, a, i, j;
for (i = 2; i < 50000; i++)
if (f(i))
{
for (j = 1; j < 10000; j++)
for (int h = 1; h < 1000; h++)
{
a = i + j * h;
if (f(a))sum++;
else { sum = 1; break; }
if (sum == 10) {
printf("%d\n", j);
return 0;
}
}
}
return 0;
}
```
供参考:
#include <cstdio>
#include <cmath> //修改
bool f(long long x)//bool f(int x) 修改
{
long long i;
for (i = 2; i <= sqrt(x); i++) //for (i = 2; i < sqrt(x); i++) 修改
if (x % i == 0) return false;
return true;
}
int main()
{
long long sum = 1, a, i, j, h; //修改
for (i = 2; i < 50000; i++)
if (f(i))
{
for (j = 1; j < 10000; j++)
for (h = 1; h < 1000; h++) //修改
{
a = i + j * h;
if (f(a))sum++;
else { sum = 1; break; }
if (sum == 10) {
printf("%lld\n", j); //printf("%d\n", j); 修改
return 0;
}
}
}
return 0;
}
因为j是long long型,类型不一样。你可以将%d 换成 %lld 试下。
%d 适合 int
%ld 适合 long