c语言中如何判断一个数是否是质数?

如题所述

判断一个数是否是质数在于看这个数字是否只能被1和它本身所整除的整数。但是有一个例外,1不属于质数。

c语言中的质数:

数学的概念中,素数就是只能被1和它本身所整除的整数。但是有一个例外,就是1不属于素数。所以你在输入一个整数并加以判断的时候就需要考虑这种情况了。如下即可:

while(scanf("%lu", &num) == 1 && num != 1)

1

这里用到了while循环来判断输入的数值并加以判断,如果输入格式正确的话会返回一个1并将输入的数值存入num这个变量中,然后再判断num的值是否为1。

在这里有一条很好用的规则用于素数的判断:测试的数只需要界于2到num的平方根之间的所有数,看它们是否可以整除num。如果可以整除,说明输入的数不是素数;反之,说明输入的数是素数。

到这里,就会有人说平方根怎么求,其实这个很好解决。你完全可以像下面这样描述判断条件:

for(div = 2; (div * div) <= num;div++){

if(num % div == 0){

if((div * div) != num){

printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);

}else {

printf("%lu is divisible by %lu.\n", num, div);

在这里,在if条件语句里面还嵌套了一个if条件语句,用来判断两个约数是否是一样的,比如144,约数是12和12,这时候就只需要打印一个约数即可。

第二,我们怎样知道一个数数素数呢?

如果num是素数,程序流程永远也进不了if语句中。为了解决这个问题,可以在循环外设置一个变量为某一值,比方说1,在if语句中将这个变量重设为0。那么,循环完成后,可以检查该变量是否仍然是1。如果是,则从没进入过if语句,这个数是素数。我这里用int类型的变量isPrime来当作一个标志实现这个想法。

好了,结合上面的所有想法,我们开始写代码了:

#include<stdio.h>

int main(void)

unsigned long num;// 要检查的数

unsigned long div;// 可能的约数

int isPrime;// 素数的标志,1代表是素数,0代表不是素数

printf("Please enter an integer for analysis. ");

printf("Enter q to quit.\n");

while(scanf("%lu", &num) == 1 && num != 1)

for(div = 2, isPrime = 1;(div * div) <= num; div++){

if(num % div == 0){// 如果能被div整除

if((div * div) != num){// 约数不相等

printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);

}else{// 约数相同

printf("%lu is divisible by %lu.\n", num, div);

// 将isPrime设置为0,表示其不是一个素数

isPrime = 0;

if(isPrime == 1){

printf("%lu 是素数.\n", num);

printf("Please enter another integer for analysis. ");

printf("Enter q to quit.\n");

printf("Bye.\n");

return 0;

这里有一个关键就是,在for循环控制表达式中使用了逗号运算符,以针对每个新输入的数将isPrime初始化为1。

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言中如何判断一个数是否是质数?
判断一个数是否是质数在于看这个数字是否只能被1和它本身所整除的整数。但是有一个例外,1不属于质数。c语言中的质数:数学的概念中,素数就是只能被1和它本身所整除的整数。但是有一个例外,就是1不属于素数。所以你在输入一个整数并加以判断的时候就需要考虑这种情况了。如下即可:while(scanf("%lu"...

C语言中怎样判断一个数是否为质数?
在C语言中,判断一个数是否为质数可以通过以下步骤实现:1、判断该数是否为1或0,因为这两个数都不是质数。2、判断该数是否能被2-100之间的任何数字整除。如果可以,那么它就不是质数。这是因为大于2的所有质数都可以写成多个2或5的次方相乘的形式,而2和5以外的任何数字都无法整除2和5。因此,如...

如何判断一个数是质数还是合数?
1、首先需要打开vs软件工程,准备好一个空白的C语言文件,引入头文件,主函数中暂时没有内容:2、这里开始编写代码,这里判断素数需要用到平方根,所以要在头文件中引入math库,然后编写判断素数的函数,函数有唯一的参数n,代表素数。判断的依据是素数n只要不能被 2 到根号下n之 间任一整数整除,则n...

怎么样判断某个数是不是质数,c语言的程序。。。
\/\/是素数

C语言输入一个整数,判断是否是质数?
{ int number,i;\/\/定义变量 printf("请随机输入一个数:");\/\/提示语句 scanf("%d",&number);\/\/键盘输入需要判断的数 for(i=2;i<=number-1;i++)\/\/循环从2开始,到这个数的掐前一个数为止 { if(number%i==0)\/\/如果取余结果为0 break;} if(i<number){ printf("%d不是素数",...

c语言判断给定的一个数是否是基数,偶数,合数,完数,水仙花的代码?
以下是 C 语言判断一个数是否是奇数、偶数、质数、完数、水仙花数的代码:```c include <stdio.h> \/* 判断是否为奇数 *\/ int is_odd(int num) { return num % 2 != 0;} \/* 判断是否为偶数 *\/ int is_even(int num) { return num % 2 == 0;} \/* 判断是否为质数 *\/ int is...

遇到一个C语言问题。输入一个整数,判断其是否为素数。
1.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。2.nn能被mm整除,则m≤n2m≤n2,所以只需要穷举m∈[2,n2]m∈[2,n2]即可,若在穷举过程中出现了nn的情况则n是质数,若mm能自加到m=n2m=n2则n不是质数。include "stdio.h"void main(){ int i,x,y=1;scanf("%d",...

C语言判断素数(求素数)
素数,又称质数,是除了1和它本身以外无法被其他整数整除的数字。例如17就是一个素数,因为它无法被2至16之间的任何整数整除。判断一个整数m是否为素数,只需检验m是否能被2至m-1之间的每个整数整除。若都无法整除,则m为素数。简化思路是只需检验m是否能被2至之间的每个整数整除,若都不能整除,m...

c语言for循环判断素数是什么?
c语言for循环判断素数是质数。质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。1和0既非素数也非合数。假设循环为for (i=2;i<=x;i++)如果输入x=7,i=2,2...

c语言入门编程题 判断一个数是否为质数
请输入一个正整数x:");scanf("%d",&x);k=sqrt(x);if(x==1)printf("该数不是质数.\\n");else { while(i<=(int)k){ n=x%i;if(n!=0)i+=1;else { printf("该数不是质数.\\n");exit(0);} } printf("该数为质数.\\n");} return 0;} 希望对您有帮助。有疑问欢迎提出。

相似回答