用指针返回个数判断素数
时间: 2023-04-03 13:02:54 浏览: 51
可以用指针返回个数判断素数,具体实现方法如下:
int isPrime(int n)
{
int i;
if(n <= 1)
return 0;
for(i = 2; i <= sqrt(n); i++)
{
if(n % i == 0)
return 0;
}
return 1;
}
int countPrimes(int *arr, int len)
{
int i, count = 0;
for(i = 0; i < len; i++)
{
if(isPrime(*(arr + i)))
count++;
}
return count;
}
在主函数中,可以这样调用:
int main()
{
int arr[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
int len = sizeof(arr) / sizeof(int);
int count = countPrimes(arr, len);
printf("There are %d prime numbers in the array.\n", count);
return 0;
}
输出结果为:
There are 10 prime numbers in the array.
相关问题
用指针判断素数返回个数
可以回答这个问题。以下是一个用指针判断素数并返回个数的示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int count_primes(int *arr, int len) {
int count = 0;
for (int i = 0; i < len; i++) {
if (is_prime(*(arr + i))) {
count++;
}
}
return count;
}
int main() {
int arr[] = {2, 3, 5, 7, 11, 13, 17, 19};
int len = sizeof(arr) / sizeof(int);
int count = count_primes(arr, len);
printf("There are %d prime numbers in the array.\n", count);
return 0;
}
```
这个程序接受一个整数数组和数组长度作为参数,使用指针遍历数组中的每个元素,判断它是否是素数,最后返回素数的个数。在这个示例中,数组中有 8 个元素,其中有 6 个是素数,因此程序输出:
```
There are 6 prime numbers in the array.
```
编写函数,判断指针p所指数据是否为素数,若是返回1,否则返回0。 函数接口定义: int isprime ( int *p );
好的,以下是函数的实现代码:
```c
int isprime(int *p) {
int i;
if (*p <= 1) { // 小于等于1的数都不是素数
return 0;
}
for (i = 2; i * i <= *p; i++) { // 判断是否为素数
if (*p % i == 0) {
return 0; // 可以被整除则不是素数,返回0
}
}
return 1; // 否则为素数,返回1
}
```
函数使用了指针参数来判断给定的数是否为素数。在函数中,首先判断给定的数是否小于等于 1,如果是则不是素数,返回 0。接着使用循环判断给定的数是否能被 2 ~ sqrt(n) 中的任何一个数整除,如果可以则不是素数,返回 0;否则为素数,返回 1。
例如,判断数 17 是否为素数,可以这样调用函数:
```c
int n = 17;
if (isprime(&n)) {
printf("%d 是素数\n", n);
} else {
printf("%d 不是素数\n", n);
}
```
输出结果为:
```
17 是素数
```
希望能够帮到你!