质数:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。

  题设:输入一个大于1的自然数,求出从2到该数之间所有的质数。

  1.  按照素数的定义来求取,用两个for循环。

  1. #include <stdio.h>
  2. int prime(int i){
  3. int j;
  4. for(j=;j<i;j++){
  5. if(i%j==){
  6. return ;
  7. }
  8. }
  9. return ;
  10.  
  11. }
  12.  
  13. int main(void){
  14. int n,i;
  15. printf("请输入一个整数: ");
  16. scanf("%d",&n);
  17. for(i = ; i <= n; i++){
  18. if(prime(i)){
  19. printf("%d ",i);
  20. }
  21. }
  22. printf("\n");
  23.  
  24. }

  2.  对 1 进行优化,先排除可以被2整除的数(一定不是质数),sqrt()减少循环的区间。

  1. #include <stdio.h>
  2. #include <math.h>
  3. int prime(int i){
  4. int j,temp;
  5. temp=sqrt(i)+;//sqrt()
  6. for(j=;j<temp;j++){
  7. if(i%j==){
  8. return ;
  9. }
  10. }
  11. return ;
  12. }
  13. int main(void){
  14. int n,i;
  15. printf("请输入一个整数: ");
  16. scanf("%d",&n);
  17. for(i = ; i <= n; i++){
  18. if(i % != ){ //除去2的倍数。
  19. if (prime(i)) {
  20. printf("%d ",i);
  21. }
  22. }
  23.  
  24. }
  25. printf("\n");
  26.  
  27. }

  3.  筛选法

  1. #include "stdio.h"
  2. #include "math.h"
  3. int main(void){
  4. int i,j,n,t,a[];
  5. t = ;
  6. for(i = ; i < ; i++){
  7. a[i] = ;
  8. }
  9.  
  10. printf("请输入一个大于1的整数: ");
  11. scanf("%d",&n);
  12.  
  13. for(i = ; i <= n; i++){
  14. if(a[i] == ){
  15. for(j = i*; j <= n; j = j+i){
  16. a[j] = ;
  17. }
  18. printf("%d ",i);
  19. t++;
  20. }
  21. }
  22. printf("\n");
  23. printf("%d",t);
  24.  
  25. }

   3-1  筛选法优化

  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int main(){
  5. int arr[], i, j, n;
  6. arr[] = ;
  7. for(i=; i<; i++){
  8. if(i % ==){
  9. arr[i] = ;
  10. }else{
  11. arr[i] = ;
  12. }
  13. }
  14.  
  15. printf("请输入一个整数: ");
  16. scanf( "%d", &n);
  17.  
  18. for(i=; i<=n; i++){
  19. if (arr[i] == ){
  20. for(j=i*i; j<=n; j=j+i*){
  21. arr[j] = ;
  22. }
  23.  
  24. printf("%d ",i);
  25. }
  26.  
  27. }
  28.  
  29. }

C_求质数的更多相关文章

  1. 求质数算法的N种境界[1] - 试除法和初级筛法

    ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...

  2. [经典算法] Eratosthenes筛选求质数

    题目说明: 除了自身之外,无法被其它整数整除的数称之为质数,要求质数很简单,但如何快速的求出质数则一直是程式设计人员与数学家努力的课题,在这边介绍一个著名的 Eratosthenes求质数方法. 题目 ...

  3. C语言1-100连加,求质数,算瑞年检测字母大小写,登录系统

    #include <stdio.h> void test(){//1+2+3+4+.....+100 int a,b; a=0; b=0; for ( ; a<=100; a++) ...

  4. 【转】求质数算法的N种境界

    原文地址:http://blog.csdn.net/program_think/article/details/7032600/ ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?& ...

  5. (转)求质数算法的N种境界[1] - 试除法和初级筛法

    ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...

  6. C语言程序设计100例之(11):求质数

    例11  求质数 问题描述 质数是指除了有1和自身作为约数外,不再有其他约数的数.比如:3.5.7是质数.而9不是质数,因为它还有约数3. 编写程序求给定区间中的所有质数. 输入格式 两个整数a和b, ...

  7. C语言程序设计100例之(12):Eratosthenes筛法求质数

    例12   Eratosthenes筛法求质数 问题描述 Eratosthenes筛法的基本思想是:把某范围内的自然数从小到大依次排列好.宣布1不是质数,把它去掉:然后从余下的数中取出最小的数,宣布它 ...

  8. 小白的C++之路——求质数

    初学C++,打算用博客记录学习的足迹.写了两个求质数的程序,修修改改. #include <iostream> #include <math.h> using namespac ...

  9. Java实现欧拉筛与花里胡哨求质数高级大法的对比

    我也不清楚这是什么高级算法,欧拉筛是昨天有位大佬,半夜无意间告诉我的 欧拉筛: 主要的含义就是我把这个数的所有倍数都弄出来,然后下次循环的时候直接就可以跳过了 import java.text.Sim ...

随机推荐

  1. python之 MySQLdb 实践 爬一爬号码

    0.目录 2.构建URL3.新建数据库4.新建汇总表5.定义连接数据库函数:connect_db(db=None, cursorclass=DictCursor)6.汇总表填充必要数据7.新建各省份子 ...

  2. 修改ini文件的批处理

    用VBS更简单: vbs代码: On Error Resume Next Dim Fso,TxtFl,Str Set Fso = CreateObject("Scripting.FileSy ...

  3. Flink的广播变量

    Flink支持广播变量,就是将数据广播到具体的taskmanager上,数据存储在内存中,这样可以减缓大量的shuffle操作: 比如在数据join阶段,不可避免的就是大量的shuffle操作,我们可 ...

  4. html5的audio实现高仿微信语音播放效果(实际项目)

    HTML部分: <div class="tab-pane fade dialog-record" id="dialogRecord"> <vo ...

  5. AtCoder Grand Contest 026 (AGC026) E - Synchronized Subsequence 贪心 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/AGC026E.html 题目传送门 - AGC026E 题意 给定一个长度为 $2n$ 的字符串,包含 $n$ ...

  6. 关系网络数据可视化:1. 关系网络图&Gephi

    1.关系网络图 如何来表示两个对象之间的关系? 把对象变成点,点的大小.颜色可以是它的两个参数,两个点之间的关系可以用连线来表示.连线分为无向(只是连接的导向,一些简单的关系很容易体现)和有向(复杂网 ...

  7. JavaSE| 泛型

    泛型 泛型:对后续所有操作的类型做约束,对后续操作起作用,对之前的不起作用: 对类型进行约束:  父 ----> 子,从范围上,父范围小,子范围大:把范围小的给范围大的, JDK1.5改写了集合 ...

  8. 线段树(lazy)-hdu1689

    题目链接:https://vjudge.net/problem/HDU-1698 题目描述: 现在Pudge想做一些操作.让我们将钩子的连续金属棒从1编号到N.对于每个操作,Pudge可以将连续金属棒 ...

  9. Java内存管理-掌握虚拟机类加载器(五)

    勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇介绍虚拟机类加载机制,讲解了类加载机制中的三个阶段,分别是:加载.连接(验证.准 ...

  10. 二叉搜索树的java实现

    转载请注明出处 一.概念 二叉搜索树也成二叉排序树,它有这么一个特点,某个节点,若其有两个子节点,则一定满足,左子节点值一定小于该节点值,右子节点值一定大于该节点值,对于非基本类型的比较,可以实现Co ...