C语言求素数的算法
前言
1,小学生版本号:
static rt_uint32_t array1[ARRAY_LEN];
void func1(void)
{
for (rt_uint32_t i = 1; i <= ARRAY_LEN; i++)
{
array1[i - 1] = 0;
} rt_uint32_t x, y = 0, z = 0;
rt_uint32_t i = 0;
for (x = 2; x <= ARRAY_LEN; x++)
{
y = 0;
for (i = 1; i <= x; i++)
{
if (x % i == 0)
{
y++;
}
}
if (y == 2)
{
z++;
array1[x - 1] = x;
}
}
array1[0] = 1;
}
2,小学生毕业版:
static rt_uint32_t array2[ARRAY_LEN];
void func2(void)
{
for (rt_uint32_t i = 1; i <= ARRAY_LEN; i++)
{
array2[i - 1] = 0;
} rt_uint32_t x, y = 0, z = 0;
rt_uint32_t i = 0;
for (x = 3; x <= ARRAY_LEN; x++)
{
y = 0;
for (i = 2; i <= x / 2; i++)
{
if (x % i == 0)
{
y++;
break;
}
}
if (y == 0)
{
z++;
array2[x - 1] = x;
}
}
array2[0] = 1;
array2[1] = 2;
}
3,初中生版:
所以算从3開始一直到 x/2 的全部奇数。
static rt_uint32_t array3[ARRAY_LEN];
void func3(void)
{
for (rt_uint32_t i = 1; i <= ARRAY_LEN; i++)
{
array3[i - 1] = 0;
} rt_uint32_t x, y = 0, z = 0;
rt_uint32_t i = 0;
for (x = 3; x <= ARRAY_LEN; x += 2)
{
y = 0;
for (i = 2; i <= x / 2; i++)
{
if (x % i == 0)
{
y++;
break;
}
}
if (y == 0)
{
z++;
array3[x - 1] = x;
}
}
array3[0] = 1;
array3[1] = 2;
}
4,高中生版:
static rt_uint32_t array4[ARRAY_LEN];
void func4(void)
{
for (rt_uint32_t i = 1; i <= ARRAY_LEN; i++)
{
array4[i - 1] = 0;
} rt_uint32_t x, y = 0, z = 0;
rt_uint32_t i = 0;
for (x = 3; x <= ARRAY_LEN; x++)
{
y = 0;
for (i = 2; i <= sqrt(x); i++)
{
if (x % i == 0)
{
y++;
break;
}
}
if (y == 0)
{
z++;
array4[x - 1] = x;
}
}
array4[0] = 1;
array4[1] = 2;
}
5,本科生版:
static rt_uint32_t array5[ARRAY_LEN];
void func5(void)
{
for (rt_uint32_t i = 1; i <= ARRAY_LEN; i++)
{
array5[i - 1] = 0;
} rt_uint32_t x, y = 0, z = 0;
rt_uint32_t i = 0;
for (x = 3; x <= ARRAY_LEN; x += 2)
{
y = 0;
for (i = 2; i <= sqrt(x); i++)
{
if (x % i == 0)
{
y++;
break;
}
}
if (y == 0)
{
z++;
array5[x - 1] = x;
}
}
array5[0] = 1;
array5[1] = 2;
}
6。本科生毕业版本号:
假设i已经被推断不是质数了,那么再找到i后面的质数来把这个质
static rt_uint32_t array6[ARRAY_LEN];
void func6(void)
{
for (rt_uint32_t i = 1; i <= ARRAY_LEN; i += 2)
{
array6[i - 1] = i;
} for (rt_uint32_t i = 3; i < sqrt(ARRAY_LEN); i+=2)
{
if (array6[i-1])
{
for(rt_uint32_t j=i<<2;j<=ARRAY_LEN;j+=i)
{
array6[j] = 0;
}
}
}
array6[1] = 2;
}
总结
| func1 | 2513922 |
| func2 | 221563 |
| func3 | 213926 |
| func4 | 762945 |
| func5 | 674993 |
| func6 | 14663 |
当然假设把ARRAY_LEN调大。可能结果又会不一样
版权声明:本文博客原创文章。博客,未经同意,不得转载。
C语言求素数的算法的更多相关文章
- c语言求素数以及改进算法
代码需要使用c99编译 #include <stdio.h> #include <stdlib.h> #include <math.h> //是否为素数 //从2到 ...
- 蓝桥杯 算法训练 Torry的困惑(基本型)(水题,筛法求素数)
算法训练 Torry的困惑(基本型) 时间限制:1.0s 内存限制:512.0MB 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7……这样的数叫做质数.Torry突 ...
- c语言求回文数的三种算法的描述
c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...
- 常见算法:C语言求最小公倍数和最大公约数三种算法
最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,当中一个最小的公倍数是他们的最小公倍数,相同地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 求 ...
- C语言求最小公倍数和最大公约数三种算法(经典)
把以前写的一些经验总结汇个总,方便给未来的学弟学妹们做个参考! --------------------------永远爱你们的:Sakura 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们 ...
- 链表插入和删除,判断链表是否为空,求链表长度算法的,链表排序算法演示——C语言描述
关于数据结构等的学习,以及学习算法的感想感悟,听了郝斌老师的数据结构课程,其中他也提到了学习数据结构的或者算法的一些个人见解,我觉的很好,对我的帮助也是很大,算法本就是令人头疼的问题,因为自己并没有学 ...
- C语言求最小公倍数和最大公约数三种算法
最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 求 ...
- 转载 筛子算法之golang实现求素数解析
package main import "fmt" // Send the sequence 2, 3, 4, ... to channel 'ch'. func generate ...
- C语言实现粒子群算法(PSO)二
上一回说了基本粒子群算法的实现,并且给出了C语言代码.这一篇主要讲解影响粒子群算法的一个重要参数---w.我们已经说过粒子群算法的核心的两个公式为: Vid(k+1)=w*Vid(k)+c1*r1*( ...
随机推荐
- SWT的选择文件和文件夹的函数
org.eclipse.swt.widgets.DirectoryDialog//选择目录org.eclipse.swt.widgets.FileDialog//SWT.OPEN打开文件 SWT.SA ...
- 查询oracle表字段信息
表字段的信息咱们可以称之为元数据,今天有人问怎么把表字段的信息导出来,说实话我还不会用plsql develper把表的结构导出来,像下图所示: 在写数据库设计说明书的时候,想要把这个表格拷贝出来,这 ...
- 局部敏感哈希-Locality Sensitive Hashing
局部敏感哈希 转载请注明http://blog.csdn.net/stdcoutzyx/article/details/44456679 在检索技术中,索引一直须要研究的核心技术.当下,索引技术主要分 ...
- Cacti监控Tomcatserver实现过程
1 首先去官网上面下载通用的监控模板 一般使用TomcatStats-0.1.zip 模板居多,下载地址: http://forums.cacti.net/download/file.php?id=1 ...
- 金色的 SQL注意事项(1)
page(1-75) 最好是没有意义的主键字段,以方便未来的扩展. PS:主键,以后标书编码填错须要改的时候,关联表都须要跟着改.假设是一个无意义的自增字段是主键就无此原因. 主键最好不要设置为联合主 ...
- 熬之滴水穿石:Spring--精简的J2EE(6)
48--曾用过的View 在Spring MVC架构中View实际上是有多种选择的.JSP是首选的view,实际上在J2E ...
- Html5 Device API详解
三.四月曾学习过html5相关知识,并就html5 device api做过一次讲解 课程时长一个小时,预期达到level 200目标,即知道html5 device api是什么,且知道怎么实现 面 ...
- Windows Phone开发(24):启动器与选择器之发送短信
原文:Windows Phone开发(24):启动器与选择器之发送短信 本节我们通过一个简单的发送短信示例来演示一下如果配合使用PhoneNumberChooserTask和SmsComposeTas ...
- CentOS6.5 Nginx优化编译配置
说到Nginx,它真的算是我在运维工作中的好朋友,它优异的性能和极高的工作效率实在是让人大爱,来自internet的报告称其epoll模型能够支持高达50000个并发连接数. Epoll[维基百科]: ...
- Java面试题集(136-150)
摘要:目,尽管仅仅有15道题目.可是包括的信息量还是非常大的,非常多题目背后的解题思路和算法是非常值得玩味的. 136.给出以下的二叉树先序.中序.后序遍历的序列? 答:先序序列:ABDEGHCF.中 ...