素数是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。
以下是一个用 Python 编写的判别素数的函数:
def is_prime(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
这个函数首先检查输入的数字是否小于等于 1,如果是,则返回 False,因为 1 和它本身以外不再有其他因数的自然数不可能是 1 或者更小的数。
然后,函数检查输入的数字是否小于等于 3,如果是,则返回 True,因为 2 和 3 都是素数。
接下来,函数检查输入的数字是否可以被 2 或者 3 整除,如果可以,则返回 False,因为除了 1 和它本身以外不再有其他因数的自然数不可能被 2 或者 3 整除。
然后,函数使用一个循环来检查输入的数字是否可以被其他奇数整除。循环从 5 开始,每次增加 6,直到 i 的平方大于 n。在每次循环中,如果 n 可以被 i 或者 i+2 整除,则返回 False,因为除了 1 和它本身以外不再有其他因数的自然数不可能被其他奇数整除。
最后,如果循环结束后仍然没有找到其他因数,则返回 True,即输入的数字是素数。
这里用C语言写一个
int main(){
int flag = 0; //是否素数标记
int num = 0; // 待判断的整数
printf("输入一个大于0的整数:");
scanf("%d",&num);
if(num<1)
{
printf("你输入的数不符合要求。 ");
return 0;
}
for(int i=2;i<=num/2;i++){
if(num % i==0){
flag = 1; // 如果该数能被2和以及小于等于它一半的数整除,就不是素数。
}
}
if(flag == 0){
printf("%d是素数。 ", num);
}else{
printf("%d不是素数。 ", num);
}
return 0;
}