十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都网站制作、凌河网络推广、小程序定制开发、凌河网络营销、凌河企业策划、凌河品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供凌河建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
辗转相除法是判断两个数是否互质的,而不是应用在一个数上,是求两个数的大公约数。
辗转相除法的具体做法:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
这是具体流程图,判断一个数是否是质数就是看它能否被除1以外的数整除。
一般来说,我们不会直接使用ASCII码来处理,因为这样不够直观。比如你说的判定输入是否是字母,是否是数字,那么有个比较直观的方法来处理。如果你看过ASCII码表,那么你就知道字数和字母在ASCII码表中都是连续的,所以这个就比较好解决了。
判定字符ch是否是数字:
if(ch='0' ch='9')
判定字符ch是否是字母:
if(ch='a' ch='z' || ch='A' ch='Z')
当然,有已经定义好的库函数用来判定是否数字和字母,不要加加载头文件ctype.h
判定字符ch是否是数字:
if(isalnum(ch));
判定字符ch是否是字母:
if(isalpha(ch));
这两个函数都是判定成立,结果是true也就是1,判定不成立,结果是false,也就是0.
判断一个数是否是质数在于看这个数字是否只能被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来当作一个标志实现这个想法。
好了,结合上面的所有想法,我们开始写代码了:
#includestdio.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。