质数是数学重要的一环,所谓质数,就是除了1和它本身外不存在任何因子的数。以下整理了一下c语言中质数的求法。
问题:输入一个正整数n(n>=2),求不大于n的全部质数
方法一:循环法
思路:判断一个数n是不是质数,可以用2到√n之间的所有整数去除n,如果都不能整除,那么n是质数。设计循环嵌套时尽量跳过一些不必要的情况。
1."2"为必输出的质数,可以单独输出。这样循环可从3到√n判断。
2.为什么只需要判断到√n的数呢?
因为n=√n*√n,n的因数除了√n,其他都是成对存在的,且必定一个大于√n一个小于√n,假设n不是质数,有个因数大于√n(不是n本身),则n必定有一个与之对应的小于√n的因数。
3.除了2以外,不存在是偶数的质数,所以在设计循环时可以设置步数step为2。
代码:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("2\n");
for(int i=3;i<=n;i+=2)
{
for(int m=3;m<i;m+=2)
{
if(i%m==0 || m*m>i)
break;
}
if(m*m>i)
printf("%d\n",i);
}
return