#include <stdio.h>
int main(int argc, const char *argv[])
{
int num = 0;
int i = 0;
int flag = 0;// 0 是质数 1 不是质数
for(num = 2; num <= 100; num++){
flag = 0;
#if 1
for(i = 2; i < num; i++){
if(num%i == 0){
break;
}
}
//上面的循环有两种结束情况
//情况1:由于 i==num 导致的结束:
// 说明 [2,num-1] 没有任何数能把 num整除 说明num是质数
//情况2:由于 break 导致的提前结束 说明 有一个数能把num整除
// 说明 num 不是质数 且如果由于这种条件退出循环 i 一定是 小于num的
if(i == num){
printf("%d 是质数\n", num);
}
#endif
#if 0
for(i = 2; i < num; i++){
if(num%i == 0){
flag = 1;
break;
}
}
//循环结束时 如果标记位没有被修改 说明 num 是质数
//在循环中使用这种方法 要注意:flag每次重新设置0
if(0 == flag){
printf("%d 是质数\n", num);
}
#endif
}
return 0;
}
编译输出结果如下:
vi zhishu.c
ubuntu@ubuntu:day0701$ gcc zhishu.c
ubuntu@ubuntu:day0701$ ./a.out
2是质数
3是质数
5是质数
7是质数
9是质数
11是质数
13是质数
15是质数
17是质数
19是质数
21是质数
23是质数
25是质数
27是质数
29是质数
31是质数
33是质数
35是质数
37是质数
39是质数
41是质数
43是质数
45是质数
47是质数
49是质数
51是质数
53是质数
55是质数
57是质数
59是质数
61是质数
63是质数
65是质数
67是质数
69是质数
71是质数
73是质数
75是质数
77是质数
79是质数
81是质数
83是质数
85是质数
87是质数
89是质数
91是质数
93是质数
95是质数
97是质数
99是质数
这种方法通过设置标志来直接判断是否是质数