C/C++,笔试面试,多种方法求100以内的所有素数
2016-02-10 13:43
417 查看
使用C语言编写程序,求1到100之间的素数(还有另一种求素数:求前100个素数)。
1.每个数试除到√x
2.将素数保存,让后面的数整除保存的素数
3.筛选:依次删除范围中的2的倍数、3的倍数、5的倍数…
![](http://s1.51cto.com/wyfs02/M00/7A/D3/wKiom1a6zGKSQGv3AAD1o3cNyG4883.jpg)
可查询更多思路 http://blog.csdn.net/program_think/article/details/7032600/
1.每个数试除到√x
2.将素数保存,让后面的数整除保存的素数
3.筛选:依次删除范围中的2的倍数、3的倍数、5的倍数…
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<memory.h> void test1()//试除法(1) { //思路:每个数试除到√x const int Range = 100; int num = 0; int i = 0, j = 2; for (i = 2; i <= Range; i++) { //令每次试除都从2开始 for (j = 2; j <= sqrt(i); j++) { if (0 == i%j) break; } if (j > sqrt(i)) { printf("%2d ", i); num++; if (0 == num % 10) printf("\n"); } } printf("\n"); } void test2()//试除法(2) { //思路:将所求出的素数保存起来,然后每次试除保存的这些素数 const int Range = 100; const int num = (int)(Range / log(Range)*1.16); //素数定理(求一定范围内的所有素数个数) int* str = (int*)calloc(num, sizeof(int));//开辟动态数组,保存以求素数 //memset(str, 0, num*sizeof(int));//没必要 系统开辟空间自动赋值0 int i = 2, j = 0; str[0] = 2; for (i = 2; i < 100; i++) { for (j = 0; str[j] != 0 && i%str[j] != 0; j++) { } if (str[j] == 0) str[j] = i; } for (j = 0; str[j] < Range&&j < num; j++) { if (0 == j % 10) printf("\n"); printf("%2d ", str[j]); } printf("\n"); free(str); } void test3()//筛选法(size = 1B => size = 1bit) { //思路:开辟动态数组初始为0,从2开始一直到最大值,令满足2的倍数条件的下标所对应置为-1,输出值为0的下标 const int Range = 100; int i = 0, j = 0; int num = 0; char* str = (char*)calloc(Range, sizeof(char));//开辟动态数组初始为0 str[0] = 1; str[1] = 1; for (i = 2; i <= Range; i++) { for (j = i + 1; j <= Range; j++) { if (0 == j % i && 0 == str[j]) str[j] = 1; } } for (j = 0; j < Range; j++) { if (str[j] == 0) { if (0 == num++ % 10) printf("\n"); printf("%2d ", j); } } printf("\n"); free(str); }
![](http://s1.51cto.com/wyfs02/M00/7A/D3/wKiom1a6zGKSQGv3AAD1o3cNyG4883.jpg)
可查询更多思路 http://blog.csdn.net/program_think/article/details/7032600/
相关文章推荐
- C#查找素数实现方法
- java使用筛选法求n以内的素数示例(java求素数)
- java求100以内的素数示例分享
- 判断一个数是不是素数的方法
- c#求范围内素数的示例分享(c#求素数)
- GO语言求100以内的素数
- Java列出2到100之间所有素数的方法
- Python素数检测实例分析
- Python实现高效求解素数代码实例
- Python素数检测的方法
- Python实现求最大公约数及判断素数的方法
- Go语言生成素数的方法
- python学习--埃拉托斯特尼筛法求素数
- Python-求素数程序
- 经典智力分析题
- 数论算法初步理解(1)
- HDU 4715 (素数筛选)(2015排位1-H)
- prime distance
- 【面试笔试】二叉树相关操作
- 【笔试面试】字符串相关操作