赞
踩
给定N个随机正整数,将其中的质数输出。
例如:
输入:[1, 2, 3, 5, 11, 12]
输出:[2, 3, 5, 11]
注意:
1、输出数组剩余元素先后顺序需要与原数组保持一致。
2、给出数组无需去重。
先说一下我的思路:
1、把所有的1修改为0(在这里用0值表示这个数之前是合数,已被剔除)。
2、把所有的偶数修改为0。
3、循环把所有的 2 * n + 3 修改为0。在此步骤的每一次循环中,都会从剩余数字中找出最大的值 nMaxRemainNum。在下一轮循环中,2 * n + 3 循环到 nMaxRemainNum 的平方根即可。
4、剩下的不为0的数据,就是质数。
以下是我写的代码,跑了几遍,没发现BUG。
- #include <iostream>
- #include <stdlib.h>
- #include <time.h>
- #include <math.h>
-
- using namespace std;
-
-
- int g_nMaxNum = 100; // 最大数值
- int g_nNumCount = 200; // 数字数量
-
-
- // 输出数组
- void PrintArr(int* pNum, int nCount)
- {
- for (int nIndex = 0; nIndex < nCount; ++nIndex)
- {
- if (0 != pNum[nIndex])
- {
- cout << pNum[nIndex] << " ";
- }
- }
- cout << endl;
- }
-
- // 获取随机
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。