C程序设计(第四版) 谭浩强 例5.9
例 5.9 输入一个大于3的整数n,判定它是否为素数(prime,又称质数)。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法1:
#include <stdio.h>
#include <stdlib.h>
int main(){
int number, i;
printf("Enter nubmer: ");
scanf_s("%d", &number);
while(number <= 3){
printf("Error! The number is less than or equal to 3! Retry!\n");
printf("Enter nubmer: ");
scanf_s("%d", &number);
}
for(i = 2; i < number; i++){
if(number % i == 0){
break;
}
}
if(number == i){
printf("%d is prime number!\n", number);
}
else{
printf("%d is not prime number!\n", number);
}
system("pause");
return 0;
}
方法2:使用函数的模块化设计
#include <stdio.h>
#include <stdlib.h>
void input(int *number){
printf("Enter nubmer: ");
scanf_s("%d", number);
while(*number <= 3){
printf("Error! The number is less than or equal to 3! Retry!\n");
printf("Enter nubmer: ");
scanf_s("%d", number);
}
}
//素数判断
bool isPrime(int *number){
if(*number % 2 == 0){
return false;
}
//大于2的偶数都不是素数,直接判断每个奇数
for(int i = 3; i < *number; i += 2){
if(*number % i == 0){
return false;
}
}
return true;
}
void output(int *number){
if(isPrime(number) == true){
printf("%d is prime number!\n", *number);
}
else{
printf("%d is not prime number!\n", *number);
}
}
int main(){
int *number = (int*)malloc(sizeof(int));
input(number);
output(number);
free(number);
system("pause");
return 0;
}