c语言如何判断一个数是素数(C语言实现素数判断)

练习C语言的第二天及第二题,我们来谈一谈对素数的判断。

提到素数,想必大家都不陌生。

素数,就是质数,大于1的一个正整数,指的是它不能被除了1与它本身以外的其它自然数整除,给几个最简单的例子,2就是素数、3也是素数、5也是素数。

很明显可以看到,这些数都不能被除了1与它本身以外的其它自然数整除。

那判断能否整除的条件,自然就是取余数。

比方以3为例,在1和它本身之间的数为2,而3除以2取余为1,不为零,则说明它为素数。

反之,以6为例,6除以2取余为0,则说明它不为素数。

c语言如何判断一个数是素数(C语言实现素数判断)(1)

那么,在知道如何判断素数的逻辑之后,我们就可以动手来写代码了。

在程序中,我们一般用mod来代表取余数,也就是用%这个符号来代表。

首先,我们要输入一个正整数N,也就是用到scanf。

之后对该正整数N进行判断。

注意,这里其实做的时候蛮有问题的,因为要判断是否为素数,就要让它对从1到它本身(开区间)进行整除,只要有一个能整除,那就说明不是素数,反之,则为素数。

需要用到一个for循环来进行遍历,再在for循环里进行条件判断。

如图所示:

在最开始做的时候,诶,我按照自己的逻辑慢慢写的,可还是产生了问题,为什么会这样呢,原因归根结底在于for循环里写printf打印语句,执行了很多次,导致最终输出的结果多种多样。

c语言如何判断一个数是素数(C语言实现素数判断)(2)

所以,为了避免这个问题,避免重复打印的问题,必须得把打印的语句给挪到for循环外面。

那挪到外面之后呢,我们就要对for循环中进行处理,可以用一个计数来代替,比方说当判断不为素数的时候,计数加一,反之,则计数不变化。

之后再在for循环之外对这个计数进行判断不就行了么。

代码如下所示:

#include<stdio.h> int main(){ int N = 0; int count = 0; scanf("%d", &N); while(N<=1){ printf("please input again\n"); scanf("%d", &N); } for(int i = 2; i < N; i ){ if(N%i == 0){ count ; } } if(count==0){ printf("it is a prime\n"); } else{ printf("it is not a prime\n"); } }

结果:

c语言如何判断一个数是素数(C语言实现素数判断)(3)

总结:总的来说,判断是否为素数还是蛮简单的,当然了,判断是否为素数其实不一定就是用这种方法,也可以用其它方法,欢迎大家一起讨论。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页