C语言4. 利用指针变量作为函数参数,从主函数里调用函数f1判断任意输入的某个正整数是否为素数,并返回其阶乘值。
时间: 2024-02-10 17:11:01 浏览: 29
好的,可以参考以下代码:
```c
#include <stdio.h>
int f1(int *n) {
int i, j, flag = 1, ans = 1;
for (i = 2; i <= *n / 2; i++) {
if (*n % i == 0) {
flag = 0;
break;
}
}
if (flag) {
for (j = 1; j <= *n; j++) {
ans *= j;
}
return ans;
} else {
printf("%d不是素数\n", *n);
return -1;
}
}
int main() {
int n, ans;
printf("请输入一个正整数:");
scanf("%d", &n);
ans = f1(&n);
if (ans != -1) {
printf("%d是素数,其阶乘为%d\n", n, ans);
}
return 0;
}
```
在f1函数中,首先判断输入的数是否为素数,如果是素数则计算其阶乘并返回结果,否则输出提示信息并返回-1。在main函数中,通过调用f1函数判断输入的数是否为素数,并输出其阶乘值。需要注意的是,在调用f1函数时需要传入其地址,即调用f1(&n)。
相关问题
用c语言3. 编写函数,能判断任意一个整数是不是素数,并利用这函数求100-300中的素数的平方根的和。
以下是使用 C 语言编写的函数,可以判断任意一个整数是不是素数,并利用这个函数求100-300中的素数的平方根的和:
```c
#include <stdio.h>
#include <math.h>
int is_prime(int num) {
if (num <= 1) {
return 0;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
double sum = 0.0;
for (int i = 100; i <= 300; i++) {
if (is_prime(i)) {
sum += sqrt(i);
}
}
printf("The sum of square roots of prime numbers between 100 and 300 is: %.2f\n", sum);
return 0;
}
```
这里的 `is_prime` 函数接收一个整数作为参数,如果这个整数是素数,则返回 1,否则返回 0。在函数中,我们首先判断如果这个整数小于等于 1,则不是素数,直接返回 0。然后从 2 开始到这个整数的平方根(使用 `sqrt` 函数计算),判断是否存在这个整数的因子,如果存在,则不是素数,返回 0,否则是素数,返回 1。
在 `main` 函数中,我们首先定义一个变量 `sum`,用于保存素数的平方根的和。然后使用一个循环遍历 100 到 300 之间的整数,对于每个整数,调用 `is_prime` 函数判断是否是素数,如果是素数,则将其平方根加入到 `sum` 中。最后输出 `sum` 的值即可。
需要注意的是,在 `printf` 函数中使用了 `%.2f` 的格式化字符串,保留两位小数输出。
c语言 写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息
好的,以下是一个判断素数的 C 语言函数:
```c
int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
```
接下来在主函数中可以调用这个函数来判断输入的整数是否为素数:
```c
#include <stdio.h>
int is_prime(int n);
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
if (is_prime(n)) {
printf("%d 是素数\n", n);
} else {
printf("%d 不是素数\n", n);
}
return 0;
}
```
当然,也可以将判断素数的函数写在主函数中,就不需要函数调用了。