写出C语言程序,完成如下任务:生成一个小于100000的正整数,并利用费马定理判断其是否为素数
时间: 2024-11-29 16:37:47 浏览: 1
初等数论中判断一个整数m是否存在原根程序
5星 · 资源好评率100%
费马定理(Fermat's Little Theorem)表明,如果p是一个大于1的质数,a是一个不是p的倍数的整数,则\(a^{p-1} \equiv 1 \mod p\)。我们可以利用这个性质来编写一个简单的C语言程序,判断给定的数字是否为素数。
```c
#include <stdio.h>
#include <stdbool.h>
// 判断一个数是否为质数的辅助函数
bool isPrime(int num) {
if (num <= 1) return false;
if (num == 2 || num == 3) return true;
// 费马小定理验证法
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
// 使用费马定理简化条件,只对非平方因子测试
int powMod = ((long long)num - 1) / i;
if (powMod > 1 && powMod % i != 0) {
int result = powMod % i;
if (result != 1) {
return false;
}
}
}
return true;
}
int main() {
int number;
printf("请输入一个小于100000的正整数:");
scanf("%d", &number);
if (isPrime(number)) {
printf("%d是质数\n", number);
} else {
printf("%d不是质数\n", number);
}
return 0;
}
```
在这个程序中,我们首先定义了一个`isPrime`函数,它会检查输入的数字是否满足费马小定理。然后在主函数里获取用户输入并调用`isPrime`函数判断。如果该数是质数,就输出它是质数,反之则说明它不是质数。
阅读全文