打印前N个素数
来源:互联网 发布:手机超星怎么看网络课 编辑:程序博客网 时间:2024/05/21 08:50
题目:打印前N个素数,不需要考虑大数和溢出
思路:从2开始,依次检测后续的每个数,若为素数,计数加1,直到计数到N。
分析:问题复杂度的瓶颈在于判断一个数是否为素数。鉴于前面的素数已经找出,可以将所有找出的素数保存下来,在判断一个数x是否为素数时,只需判断该数x是否能整除[2,sqrt(x)]内的所有素数即可。
/* * 打印前N个素数 * 不需要考虑大数和溢出的情况 * */ #include <vector> #include <stdio.h> #include <math.h> void print_prime(int N) { if (N < 1) return; std::vector<int> primes; int num = 2; int count = 1; primes.push_back(num); printf("%d ", num); while (count < N) { bool isPrime = true; ++ num; int sqr = (int)std::sqrt((float)num); for (std::vector<int>::iterator iter = primes.begin(); iter != primes.end() && *iter <= sqr; ++ iter) { if (num % *iter == 0){ isPrime = false; break; } } if (isPrime) { ++ count; primes.push_back(num); printf("%d ", num); } } }
PS: Google,2013,校招,笔试
- 打印前N个素数
- 打印前N个素数
- 求前n个素数
- 找出前N个素数
- 前n个素数 && 小于等于n的素数_legend
- java打印前100个回文素数
- 求前n个素数之和
- 求前n个素数的和
- 前n个素数的乘积表
- java实现:打印前n个质数
- Google 2013校招笔试题:前N个素数
- 第n个素数
- google校招笔试题 2.1 写函数,输出前N个素数
- 输出前50个素数
- 计算前50个素数
- 求前100个素数
- 输出前一百个素数
- 输出前num个素数
- 中缀表达式转换成后缀表达式/计算后缀表达式
- Cocos2d-x纹理优化的一些方案
- delphi 容器类 2
- samba的配置文件, 共享opt和home目录
- kmp 练习下
- 打印前N个素数
- gcc 编译选项
- aba 回文练习 -- 参考罗大神的
- k_over 重叠字符串
- m_sort 归并排序(迭代)
- insert /*+append*/ into (直接插入)logging失效
- Java算法(链表操作实例)
- 设计响应式导航菜单的五大法则
- How to Connect to Oracle via JDBC