如果和求一个数的约数和判断一个数是不是素数?
约数:能被num整除的数,称为num的约数(其中约数不包括1和其本身)。
素数:只能被1和其本身整除的数称为素数。如2、3、5、7、11注意:1不是素数
1、求出一个数的约数。
第一种方法:把 n = 2 到 num - 1 的数都让num整除一下,能被整除就是num的约数。
for( div = 2; div < num; div++)
if ( num % div ==0)
Printf(“%d is divisible by %d\n”, num, div);
但是这个方法有些浪费时间,我们可以改进一下。例如,考虑如果144%2得0,说明2 是144的约数;如果144除以2 得72,那么72也是144的约数。所以约数是成对存在的,num%div测试成功可以得到两个约数。为了弄清楚其中的原理,我们分析一下循环中得到的成对约数;
2和72、3和48、4和36、6和24、8和18、9和16、12和12、16和9、18和8等等。可以看出,在达到12和12 之后,又得到了之前已经找到的约数(次序相反)。因此,不用从2到144-1循环这么多次,在达到12以后就可以停止循环了。这大大节省了循环时间。
所以采用第二种方法:
for (div = 2;(div * div ) <= num; div++)
if ( num % div == 0)
Printf(“%d is divisible by %d and %d .\n”,
num, div, num/div);
2、判断一个数是不是素数。
如果一个数没有约数(1和其本身不是它的约数),那么它就是素数。
第一种方法:
int judge(int n)
{
for( div = 2; div < num; div++)
if ( num % div ==0)
return 0;//这个数num有约数,所以它不是素数,返回0表不是素数
return 1;//循环一遍都没有约数,会执行这个语句。
}
第二种方法:
int judge(int n)
{
for (div = 2;(div * div ) <= num; div++)
If ( num % div == 0)
return 0;//这个数num有约数,所以它不是素数,返回0表不是素数
return 1;//循环一遍都没有约数,会执行这个语句。
}
点击查看更多内容
3人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦