有关素数

有关素数问题的几种解法总的来说就是看2–(n-1)之间的数能不能被这个数整除,如果整除就用break结束循环,此时的i肯定小于n,没有执行下一步i++,是素数的话执行i++所以i==n

[1]#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
printf(“100–200之间的素数有:\n”);
for (i = 100; i <= 200; i++)
{
for (j = 2; j < i; j++) //也可以是for (j = 2; j <=i-1; j++)
if (i%j == 0)break;//如果能被整除则不是素数结束循环,不整除的话继续执行直到ji
if (j
i)printf("%d\t", i);
}
system (“pause”);
return 0;
}

[2]
#include<stdio.h>
#include<stdlib.h>
#include <math.h>
int main()
{
int i,n,k;
while (n<3)//判断这个数是不是大于3的要用while循环
{
printf(“输入有误请重新输入:”);
scanf("%d", &n);
}
k=sqrt(n);
for (i = 2; i <= k; i++)//当n>3时执行for语句看能否被2–(n-1)之间的数整除
if (n%i == 0)break;//如果整除了就说明不是素数跳出循环
if (i <=k)printf(“no”);//因为break提前结束循环没有继续执行i++显然i此时最大取到k,即该数是非素数
else printf(“yes”);//正常情况下不是素数的话一直执行到i=k+1
system(“pause”);
return 0;
}

【3】
#include<stdio.h>
#include<stdlib.h>
#include <math.h>
int IsPrime(int x)
{
int num=2;
while (num < x)
{
if (x% num == 0)
return 0;
num++;
}
return 1;
}
}
int main()
{
printf(“素数:\n”);
int i = 100;
while (i < 200)
{
if (IsPrime(i) == 1)
printf("%5d\n", i);
i++;
}system(“pause”);
return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43249530/article/details/82952703