素数是一个大于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是素数