初遇函数题1092: 素数表(函数专题初遇函数题新手必看解析

前言

1092答案加解析

问题1:

问:为什么要给n开根号?(题目57也是有关素数的 不知道当时你们理解了没有)

答:

给n开根号是为了减少判断的次数,从而提高程序的效率。

素数的定义是除了1和自身外没有其他因数的整数。对于一个大于1的整数n,如果存在大于1且小于等于sqrt(n)的因数,那么必定存在一个小于等于sqrt(n)的因数和一个大于sqrt(n)的因数,根据乘法的性质,这两个因数的乘积必然等于n。因此,如果判断n是否是素数,只需要判断从2到sqrt(n)之间的数是否能整除n即可,无需再判断大于sqrt(n)的数。

例如,对于n=100,如果我们从2到100之间的每个数字都判断能否整除n,那么我们需要判断98个数字,但如果我们只判断从2到10之间的数字,也就是sqrt(100)=10,我们只需要判断9个数字,效率明显提高了。

问题2: int main()主函数前面那一堆是干什么用的?

答:为了声明-即模板!来提供后续素数的判断 直接套!

答案如下所示

#include <stdio.h>
#include<math.h>
int prime(int n)
{
    int i=2;
    int result=1;
    if(n==1)//特殊情况判断1单拉出来,如果n是1直接说明他是素数
        {
            return 0;//结果等于0说明他不是素数
        }
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            return 0;//如果是素数就返回零
        }
    
     
    }
    return 1;// 循环结束仍然没有整除,说明是素数,返回1
}
//下面就是我们熟悉的判断素数的方法
int main()
{
 int m,n;
 scanf("%d %d",&m,&n);
 for(int g=m;g<=n;g++)
 {
  if(prime(g)==1) //套用模板如果prime g结果等于1;
  printf("%d ",g);
 }
 return 0;
}
------本文已结束,感谢您的阅读------
THE END
喜欢就支持一下吧
点赞14 分享
评论 共1条
头像
善语结善缘,恶语伤人心
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情图片