C_C++_XY_03. 求两个数之间的素数
题目描述:给2个数,求这两个数字之间的素数个数,并将素数的个数返回,将求出的素数输出至pOut中。
对于如下函数即求[pInput[0], pInput[1]]之间的素数,将得到的素数输出至pOut中,返回素数的个数。
认为只能够被1和它本身整除的数字是素数。
int vDecode(int* pInput, int iLen, int *pOut);
【输入】pInput: 输入数组;
iLen: 输入长度
pOut: 输出长度
【返回】 返回输出数组的长度
【注意】 只需要完成该函数功能算法,中间不需要有任何IO的输入输出
输入:pInput[0] = 2, pInput[1] = 8,即求[2,8]之间的素数
输出:3,5,7
返回:3
这里题意不清——应该不包括2,但包括8吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
| #include <iostream> #include <math.h> using namespace std; int vDecode(int* pInput, int iLen, int *pOut) { if ((pInput == NULL) || (pInput[0] > pInput[1]) || (pInput[1] < 2) || (iLen < 2) || (iLen > 2)) { *pOut = '\0'; return 0; } int count = 0; for (int i = pInput[0]+1; i < pInput[1]; i++) { int k = sqrt(i); int j; for (j = 2; (j <= k) && ( i % j != 0); j++) { ; } if (j > k) { *pOut = i; pOut++; count++; } } *pOut = '\0'; return count; } int main() { int a[2] = {2,8}; int pOut[10]; vDecode(a, 2,pOut); int *tmp = pOut; while (*tmp != '\0') { cout << *tmp << endl; tmp++; } return 0; }
|