C语言设计 (第四版) 谭浩强 习题2.4(6)
习题 2.4(6) 将100~200之间的素数输出。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
方法1:使用循环判断
#include <stdio.h>
#include <stdlib.h>
#define START 100
#define END 200
int main(){
int i, j;
int count = 0;
for(i = START; i <= END; i++){
for(j = 2; j < i; j++){
if(i % j == 0){
break;
}
}
if(j == i){
printf("%d ", j);
count++;
if(count % 10 == 0){
printf("\n");
}
}
}
printf("\n");
system("pause");
return 0;
}
方法2: 使用函数的模块化设计
#include <stdio.h>
#include <stdlib.h>
#define START 100
#define END 200
bool isPrime(int n){
for(int i = 2; i < n; i++){
if(n % i == 0){
return false;
}
}
return true;
}
void numInterval(int start, int end, int *arr, int *size){
int j = 0;
for(int i = start; i <= end; i++){
if(isPrime(i) == true){
arr[j++] = i;
}
}
*size = j;
}
void output(int *arr, int *size){
for(int i = 0; i < *size; i++){
printf("%d ", arr[i]);
if((i + 1) % 10 == 0){
printf("\n");
}
}
printf("\n");
}
int main(){
int *arr = (int*)malloc((END-START)*sizeof(int));
int *size = (int*)malloc(sizeof(int));
numInterval(START, END, arr, size);
output(arr, size);
free(size);
free(arr);
system("pause");
return 0;
}