c语言怎么测试num变量,c语言中如何判断一个数是否是质数? C语言中求质数过程是怎样的...

导航:网站首页 >

c语言中如何判断一个数是否是质数? C语言中求质数过程是怎样的

c语言中如何判断一个数是否是质数? 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

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。

匿名网友:

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

答:判断一个数是否是质数在于看这个数字是否只能被1和它本身所整除的整数。但是有一个例外,1不属于质数。 c语言中的质数: 数学的概念中,素数就是只能被1和它本身所整除的整数。但是有一个例外,就是1不属于素数。所以你在输入一个整数并加以判断...

2.C语言中求质数过程是怎样的

问:#include #include #include int main() ...

3.判断一个数是否是素数,为什么只要除到根号那个数就...

答:x=ab 那么a和b,必然有一个大于√x,一个小于(或者两个都等于)。 那么不是只要判断到√x就可以么?

4.c语言求素数的办法?只需解题思路

答:/*求素数的三种方法 一:for(i=2;i

5.C语言求救:统计素数个数

问:题目描述 从键盘输入一个整数n(98000<=n<=100000),统计1至n范围内素数的...

6.C语言编程:判断某数是否是质数

答:#include int main(int argc,int argv[]){ int a,flag; scanf(%d,&a);/*输入一个数进行判断是否是质数*/ int isprime(int);/*这里是对将要调用的函数声明一下*/ flag=isprime(int); if(flag==1) printf(%d is isprime,a); printf(%d is no...

7.c语言判断是不是素数的程序

问:#include main() {int m,i,k; scanf(%d,&m); k=m; for(i=2;...

8.求C语言编程,判断一个数是不是素数

答:判断一个数是否是素数 #include math.h int su(long x) { int i; if(x%2==0) return 0; else for(i=3;i

9.C语言编写程序:三个素数乘积是105 求这三个素数。

答:分解质因数的程序: #include #include int main() {int x,i,st=1; scanf(%d,&x); printf(%d=,x); for(i=2;i1)printf(*%d,x); printf(\n); return 0; }

10.c语言中怎样循环判断一个数是不是质数

答:用2,3,4,...,该数减1分别当成除数与这个数进行运算,如果余数是0则不是质数,如果所有数都不能整除则为质数 简化:实际上只需要计算到该数的根号2即可 计算机上兼顾运算复杂度的简化:计算到该数除以2 举例:需要判断f是否素数,b=1表示素数 for...

问题推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值