素数是一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数;判断一个数是不是素数只需让2-这个数本身减一的所有数进行相除,如果没有一个数能把这个数本身整出,这个数就是素数.
设判断X;
所以我们可以运用for循环,使得i=2;i<x;i++for(i=2;i<x;i++)
来进行判断 在一个循环中x%1到x-1所有的数,没有一个等于0,这个数就是素数.
判断多个数只需在for循环外再加一个循环即可.
1.判断一个数是否为素数
#include<stdio.h>int main(){int input = 0;scanf("%d", &input);int i = 0;for (i = 2; i < input; i++){if (input % i == 0){break;}}if (i >= input){printf("%d是素数",input);}else{printf("%d不是素数", input);}return 0;}
2.判断100-200中的素数(最简单)
#include<stdio.h>int main(){int j = 0;int i = 0;for (j = 100; j <= 200; j++){for (i = 2; i < j; i++){if (j % i == 0){break;}}if (i >= j){printf("%d是素数\n", j);}//else//{//printf("%d不是素数\n", input);//}}return 0;}
运行结果:
101是素数
103是素数
107是素数
109是素数
113是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数
3.判断100-200中的素数(改进)
例如16=2*8=4*4,假设一个数X,当X不是素数时,肯定有一个小于等于X/2的数会使得X被整出,从而判断出X不是素数,本例中 2和4都可使16被整除.
#include<stdio.h>int main(){int j = 0;int i = 0;for (j = 100; j <= 200; j++)//100的数{for (i = 2; i < j/2; i++)//判断--只需判断j/2个数即可{if (j % i == 0){break;}}if (i >= j/2){printf("%d是素数\n", j);}//else//{//printf("%d不是素数\n", input);//}}return 0;
运行结果:
101是素数
103是素数
107是素数
109是素数
113是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数
4.判断100-200中的素数(进一步改进)
例如16=2*8=4*4,这次我们可以看,假设一个数X,当X不是素数时,肯定有一个小于等于根号下X的数会使得X被整出.
#include<stdio.h>#include<math.h>int main(){int j = 0;int i = 0;for (j = 100; j <= 200; j++)//100的数{for (i = 2; i < sqrt(j); i++)//判断--只需判断根号下j个数即可{if (j % i == 0){break;}}if (i >= sqrt(j)){printf("%d是素数\n", j);}//else//{//printf("%d不是素数\n", input);//}}return 0;}
运行结果:
101是素数
103是素数
107是素数
109是素数
113是素数
121是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
169是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数
5.判断100-200中的素数(进一步改进)
可知素数一定不会是偶数,对此我们可以把100-200中的偶数去除.
#include<stdio.h>#include<math.h>int main(){int j = 0;int i = 0;for (j = 101; j <= 200; j+=2)//去除掉偶数{for (i = 2; i < sqrt(j); i++)//判断--只需判断根号下j个数即可{if (j % i == 0){break;}}if (i >= sqrt(j)){printf("%d是素数\n", j);}//else//{//printf("%d不是素数\n", input);//}}return 0;}
输出结果:
101是素数
103是素数
107是素数
109是素数
113是素数
121是素数
127是素数
131是素数
137是素数
139是素数
149是素数
151是素数
157是素数
163是素数
167是素数
169是素数
173是素数
179是素数
181是素数
191是素数
193是素数
197是素数
199是素数