请用C++编写两个函数int zhizhenint pint nint shuzuint arint n用于计算实参数组中元素值为素数的元素个数形参n对应的实参存储数组单元元素的个数
- int zhizhen(int *p, int n)函数
#include <cmath>
int zhizhen(int *p, int n)
{
int cnt = 0;
for (int i = 0; i < n; i++)
{
int num = *(p + i);
bool flag = true;
if (num <= 1)
flag = false;
else
{
int sqrtnum = sqrt(num);
for (int j = 2; j <= sqrtnum; j++)
{
if (num % j == 0)
{
flag = false;
break;
}
}
}
if (flag)
cnt++;
}
return cnt;
}
- int shuzu(int *ar, int n)函数
int shuzu(int *ar, int n)
{
int cnt = 0;
for (int i = 0; i < n; i++)
{
int num = ar[i];
bool flag = true;
if (num <= 1)
flag = false;
else
{
for (int j = 2; j < num; j++)
{
if (num % j == 0)
{
flag = false;
break;
}
}
}
if (flag)
cnt++;
}
return cnt;
}
以上两个函数都采用了试除法的思路,对于每个数,从2到sqrt(num)尝试除以每个数,如果存在一个数可以整除,则不是素数,否则是素数。其中zhizhen函数使用了指针访问数组元素,而shuzu函数使用了数组下标访问数组元素。
原文地址: https://www.cveoy.top/t/topic/bZWa 著作权归作者所有。请勿转载和采集!