代码需要使用c99编译

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//是否为素数
//从2到x-1测试是否可以整除
//时间复杂度O(n-2),n趋向正无穷
int isPrime(int x)
{
int ret = ;
for(int i = ; i < x; i++)
{
if(x % i == )
{
ret = ;
break;
}
}
return ret;
} //除了2以外,所有的偶数都不是素数,从3到x-1,每次加2
//x为偶数时间复杂度O((n-3)/2+1)
//x很大时时间复杂度接近于(n/2)
int isPrime2(int x)
{
int ret = ;
if(x == || (x % == && x != ))
ret = ; for (int i = ; i < x; i += )
{
if( x % i == )
{
ret = ;
break;
}
} return ret;
} //无须到x-1,到sqrt(x)
//时间复杂度O(Log2n) 即sqrt(x)
int isPrime3(int x)
{
int ret = ; if(x == || x % == && x != )
ret = ;
for(int i = ; i < sqrt(x); i += )
{
if( x % i == )
{
ret = ;
break;
}
} return ret;
} //判断是否能被已知的且<x的素数整除
int isPrime4(int x, int knownPrimes[], int numberOfKnownPrimes)
{
int ret = ;
int i; for( i = ; i < numberOfKnownPrimes; i++)
{
if (x % knownPrimes[i] == )
{
ret = ;
break;
}
} return ret;
} int main()
{
const int number = ;
int prime[number] = {};
int count = ;
int i = ; while( count < number )
{
if(isPrime4(i ,prime, count))
{
prime[count++] = i;
}
i++;
} for( i = ; i < number; i++)
{
printf("%d",prime[i]);
if( (i + ) % ) printf("\t");
else printf("\n");
}
return ;
}

c语言求素数以及改进算法的更多相关文章

  1. C语言求素数的算法

    前言 最后一次是出了素数的问题C语言解决题目(面试),当时用了最粗暴的算法.回来细致參考资料,事实上答案有非常多种: 1,小学生版本号: 推断 x 是否为质数,就从 2 一直算到 x-1. stati ...

  2. c语言-求完全数的一个算法

    #include<iostream> #include<math.h> using namespace std; int main() { int n,i,j=0,k,a[10 ...

  3. 蓝桥杯 算法训练 Torry的困惑(基本型)(水题,筛法求素数)

    算法训练 Torry的困惑(基本型) 时间限制:1.0s   内存限制:512.0MB      问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7……这样的数叫做质数.Torry突 ...

  4. c语言求回文数的三种算法的描述

    c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...

  5. 转载 筛子算法之golang实现求素数解析

    package main import "fmt" // Send the sequence 2, 3, 4, ... to channel 'ch'. func generate ...

  6. 【转】C语言快速幂取模算法小结

    (转自:http://www.jb51.net/article/54947.htm) 本文实例汇总了C语言实现的快速幂取模算法,是比较常见的算法.分享给大家供大家参考之用.具体如下: 首先,所谓的快速 ...

  7. 如何写出高质量的Python代码--做好优化--改进算法点滴做起

    小伙伴你的程序还是停留在糊墙吗?优化代码可以显示程序员的素质欧! 普及一下基础了欧: 一层for简写:y = [1,2,3,4,5,6],[(i*2) for i in y ]       会输出  ...

  8. c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode

    #include <stdio.h> #include <math.h> #include <string.h> char explode( char * str ...

  9. 数论 - Miller_Rabin素数测试 + pollard_rho算法分解质因数 ---- poj 1811 : Prime Test

    Prime Test Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 29046   Accepted: 7342 Case ...

随机推荐

  1. php函数copy和rename的区别

    copy ( string source, string dest )将文件从 source 拷贝到 dest.如果成功则返回 TRUE,失败则返回 FALSE. 如果要移动文件的话,请用 renam ...

  2. CSS基础学习-15-1.CSS 浏览器内核

  3. vscode调整字体大小

    在vscode中,通过setting>User>Text Editor>Font可以调整字体大小,但是这里只是调整右侧的代码编辑区域的字体,左侧的侧边栏确无法调整字体大小,找了很久都 ...

  4. google chrome调试

    1,同样的代码使用firefox运行不会报错,正常运行. 2,同样的代码使用google chrome 有时候会误报网页? 如下:代码可以在 firfox edge正常运行,在chrome  oper ...

  5. Unable to copy file, Access to the path is denied

    Unable to copy file, Access to the path is denied http://stackoverflow.com/questions/7130136/unable- ...

  6. [Luogu] 旅行

    题面 https://www.luogu.org/problemnew/show/P3313#sub 题解 https://www.zybuluo.com/wsndy-xx/note/1136233

  7. 【原创】洛谷 LUOGU P3371 【模板】单源最短路径

    P3371 [模板]单源最短路径 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出 ...

  8. 如何写出好的PRD(产品需求文档)(转)

    作者:Cherry,2007年进入腾讯公司,一直从事互联网广告产品管理工作,目前在SNG/效果广告平台部从事效果广告的产品运营工作. PRD(Product Requirement Document, ...

  9. Linux常用目录及目录作用说明

    Linux目录结构 /:根目录 /boot:存放系统启动相关文件 /etc:存放系统配置文件 /dev:存放系统设备文件(如/dev/sda) /run:存放系统运行相关文件 /bin:存放系统命令 ...

  10. 6.使用Feign实现声明式REST调用

                        使用Feign实现声明式REST调用 6.1. Feign简介 Feign是一个声明式的REST客户端,它的目的就是让REST调用更加简单. Feign提供了H ...