给我一个c++代码用于判断一个很大的素数
时间: 2024-05-09 08:16:55 浏览: 12
以下是一个用于判断一个很大的素数的 C 代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(long n) {
if (n <= 1) { // 1 不是素数
return false;
}
for (long i = 2; i * i <= n; i++) {
if (n % i == 0) { // 如果 n 可以被 i 整除,则 n 不是素数
return false;
}
}
return true;
}
int main() {
long n = 1234567891011; // 待判断的数
if (is_prime(n)) {
printf("%ld 是素数\n", n);
} else {
printf("%ld 不是素数\n", n);
}
return 0;
}
```
这个代码采用了试除法来判断一个数是否为素数。从小到大枚举从 2 到 sqrt(n) 的每个数,如果它可以整除 n,那么 n 就不是素数。如果 n 能被 2 到 sqrt(n) 中的任何数整除,就可以确定它不是素数;否则它就是素数。
相关问题
给我一个随机生成大素数的c++代码
下面是一种生成随机大素数的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int is_prime(long int n) {
if (n == 2 || n == 3) {
return 1;
}
if (n == 1 || n % 2 == 0) {
return 0;
}
for (long int i = 3; i * i <= n; i += 2) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
long int generate_prime(int bits) {
long int p = 0;
do {
p = rand() % (1 << bits);
if (p % 2 == 0) {
p++;
}
} while (!is_prime(p));
return p;
}
int main() {
srand(time(NULL));
int bits = 128;
long int c = generate_prime(bits);
printf("随机生成的%d位大素数c为:%ld", bits, c);
return 0;
}
```
此代码会生成一个长度为128位的随机大素数。您可以根据需要更改生成的位数。注意,由于素数的随机性质,每次运行这个代码都会生成一个不同的大素数。
我需要一段C++代码来判断一个数是不是素数
以下是一段C代码,用于判断一个数是否为素数:
```
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (isPrime(num)) {
printf("%d是素数\n", num);
} else {
printf("%d不是素数\n", num);
}
return 0;
}
```
该代码先判断输入的数是否小于等于1,若是则直接返回false;否则,从2开始循环遍历到num的平方根,若num能被i整除,则返回false,表示num不是素数;否则,num是素数,返回true。最后在main函数中输入一个整数num,调用isPrime函数判断num是否为素数,输出判断结果。