C语言CJ最近在学习数论。众所周知,学习数论总是离不开质数。由于用人脑判断一个数字是否是质数并不是一件容易的事情,所以CJ在学习的时候总是在重复地想一个问题:数x是否一个质数?(0≤x≤1299709)这令他非常苦恼,因此他想要寻求你的帮助:给出T组询问,对于每一个询问x,请你告诉他离x最近且大于等于x的质数与x的数轴距离是多少?(取绝对值)。
时间: 2024-04-16 19:28:41 浏览: 10
你好!对于给定的数字x,你可以使用一个函数来判断它是否是质数,然后再找到离x最近且大于等于x的质数。下面是一个用C语言实现的例子:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int findNextPrime(int x) {
while (true) {
if (isPrime(x)) {
return x;
}
x++;
}
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
int x;
scanf("%d", &x);
int nextPrime = findNextPrime(x);
int distance = nextPrime - x;
printf("Distance for %d: %d\n", x, distance);
}
return 0;
}
```
在这个例子中,我们首先定义了一个函数 `isPrime` 来判断一个数字是否是质数。然后,我们使用 `findNextPrime` 函数来找到离给定数字x最近且大于等于x的质数。最后,我们计算离x的数轴距离,并输出结果。
希望这可以帮助到你!如有任何问题,请随时向我提问。