c语言编写一个程序,判断从键盘输入的正整数n是否为素数,要求写如下子函数,一个子函数判断是否为素数,一个子函数对输入数据作合法性检查(是否为正的、整数)。主函数中要调用两个子函数完成素数的判断工作,如果输入的不是素数,要提示用户再次输入,而不是退出。
时间: 2023-06-07 11:11:42 浏览: 93
好的,我明白了。以下是符合要求的C语言程序代码:
```
#include <stdio.h>
#include <stdlib.h>
int is_valid_input(int n) {
if (n <= 0) {
printf("请输入正整数!\n");
return 0;
}
return 1;
}
int is_prime(int n) {
int i;
for(i=2; i*i<=n; i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int main() {
int n;
do {
printf("请输入一个正整数:");
scanf("%d", &n);
} while(!is_valid_input(n));
while(!is_prime(n)) {
printf("%d不是素数,请重新输入:", n);
scanf("%d", &n);
}
printf("%d是素数!", n);
return 0;
}
```
程序中的 is_valid_input() 函数作为输入数据的合法性检查函数,它接受一个整数参数 n, 判断 n 是否满足大于零,如果不满足则提示用户重新输入。is_prime() 函数作为判断素数的子函数,它接受一个整数参数 n,利用循环遍历 2 到 n 的平方根之间的数,判断是否能被整除以此来判断 n 是否为素数。主函数中通过调用两个子函数来完成素数判断工作。当用户输入的数不是素数时,主函数会反复提示用户重新输入,直到输入的数为素数为止。
阅读全文