当前位置:   article > 正文

浙大版《C语言程序设计(第3版)》题目集 练习4-11 统计素数并求和 (20 分)

7-3 统计素数并求和 分数 20 作者 张彤彧 单位 浙江大学 本题要求统计给定整数m和

练习4-11 统计素数并求和 (20 分)

本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:

输入在一行中给出两个正整数M和N(1)。

输出格式:

在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

输入样例:

10 31

输出样例:

7 143
 
思路:写出一个判断素数的函数,然后用count记录素数出现的个数和sum统计素数的和。
 
代码如下:
  1. #include <stdio.h>
  2. #include<math.h>
  3. int p(int n);
  4. int main()
  5. {
  6. int n, m, i, count=0, sum=0;
  7. scanf("%d%d", &n, &m);
  8. for(i=n;i<=m;i++)
  9. {
  10. if(p(i)==1)
  11. {
  12. sum=sum+i;
  13. count++;
  14. }
  15. }
  16. printf("%d %d",count,sum);
  17. return 0;
  18. }
  19. int p(int n)
  20. {
  21. int i;
  22. for(i=2;i<=sqrt(n);i++)
  23. if(n%i==0)
  24. break;
  25. if(n<=0||n%1!=0)
  26. return 0;
  27. else if(i>sqrt(n)&&n!=1)
  28. return 1;
  29. else
  30. return 0;
  31. }

 

科普:

质数Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。大于1的自然数若不是素数,则称之为合数(也称为合成数)。例如,5是个素数,因为其正约数只有1与5。而6则是个合数,因为除了1与6外,2与3也是其正约数。算术基本定理确立了素数于数论里的核心地位:任何大于1的整数均可被表示成一串唯一素数之乘积。为了确保该定理的唯一性,1被定义为不是素数,因为在因式分解中可以有任意多个1(如3、1×3、1×1×3等都是3的有效约数分解)。

古希腊数学家欧几里得于公元前300年前后证明有无限多个素数存在(欧几里得定理)。现时人们已发现多种验证素数的方法。其中试除法比较简单,但需时较长:设被测试的自然数为n,使用此方法者需逐一测试2与\sqrt{n}之间的整数,确保它们无一能整除n。对于较大或一些具特别形式(如梅森数)的自然数,人们通常使用较有效率的算法测试其是否为素数(例如277232917-1是直至2018年8月为止已知最大的梅森素数,也是直至2018年8月为止已知最大的素数)。虽然人们仍未发现可以完全区别素数与合数的公式,但已建构了素数的分布模式(亦即素数在大数时的统计模式)。19世纪晚期得到证明的素数定理指出:一个任意自然数n为素数的概率反比于其数位(或n的对数)。

许多有关素数的问题依然未解,如哥德巴赫猜想(每个大于2的偶数可表示成两个素数之和)及孪生素数猜想(存在无穷多对相差2的素数)。这些问题促进了数论各个分支的发展,主要在于数字的解析或代数方面。素数被用于资讯科技里的几个程序中,如公钥加密利用了难以将大数分解成其素因数之类的性质。素数亦在其他数学领域里形成了各种广义化的素数概念,主要出现在代数里,如素元及素理想。

来源:维基百科-质数(https://zh.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0

转载于:https://www.cnblogs.com/IT-Lead-The-World/p/11108077.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/329026
推荐阅读
相关标签
  

闽ICP备14008679号