素数问题
素数是什么?
素数 (Prime number,又称质数),指在大于1 的 自然数中,除了1和该数自身外,无法被其他自然数整除 的 数(也可定义为只有1与该数本身两个正因数 的 数)。 大于1 的 自然数若不是 素数 ,则称之为合数(也称为合成数)。
代码实现
1.素数判断
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int m = 0;
for (int i = 2; i < n; i++ )
{
if(n % i == 0) //代表这个数会被除1和他本身意外的数整除
{
m = 1;
break;//只要存在一个i满足后面就不用算了
}
}
if (m == 0) //判断
{
printf("%d是素数\n", n);
} else
{
printf("%d不是素数\n", n);
}
return 0;
}
2.取素数
如:求100到200间的素数
在这里有一个素数的性质:在10以后的素数的个位只能是1,3,7,9;
我们发现要想精确的利用这个性质比较困难,但我们可以放大一下范围,近似的理解为10以后的素数全是奇数。
同时,我们也都知道奇数是不可能被偶数所整除,于是最终的代码为
#include <stdio.h>
int main()
{
int n;
for (n = 101; n <= 200; n+=2)//利用10以后的素数只能是奇数
{
int i = 3;
while(i < n)
{
if (n%i==0)
{
break;
}
i+=2;//奇数不可能会被偶数整除
}
if (i == n)
printf("%d\n", n);
}
}
总结
以上就是我在面对素数问题的解法,主要还是抓住素数本身的性质来做文章,大家如果有更好的办法也可以互相交流,如果有错误麻烦及时指正。
感谢观看。