栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

如何求一个数的约数和判断一个数是不是素数?

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何求一个数的约数和判断一个数是不是素数?

如果和求一个数的约数和判断一个数是不是素数?

约数:能被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 %dn”, 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;//循环一遍都没有约数,会执行这个语句。

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/233629.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号