C语言求1到n所有质数

Python012

C语言求1到n所有质数,第1张

#include<stdio.h>

#include<math.h>

int lsPrime(int n)

int main()

{

int N, i, k, n = 0

printf("input N:\n")

scanf("%d", &N)

while (N != 0)

{

n = N % 10 + n * 10

N = N / 10

}

for (i = 1i <= ni++)

{

if (lsPrime(i) == 1)

{

printf("%d\t", i)

}

}

return 0

}

int lsPrime(int n) //是素数返回1,否则返回0

{

int i, k

k = (int) sqrt(n)

for (i = 2i <= ki++)

{

if (n % i == 0)

break

}

if (i >k &&n >1)

return 1

else

return 0

}

#include<stdio.h>//头文件

int main()//主函数

{

int number,i//定义变量

printf("请随机输入一个数:")//提示语句

scanf("%d",&number)//键盘输入需要判断的数

for(i=2i<=number-1i++)//循环从2开始,到这个数的掐前一个数为止

{

  if(number%i==0)//如果取余结果为0

  break

}

if(i<number)

{

  printf("%d不是素数",number)

}

else

{

  printf("%d是素数",number)

}

return 0//函数返回值为0

}

#include<stdio.h>

int main()

{

int i,j

int count=0

for(i=2i<100i++)

{

for(j=2j<=i/2j++)

if(i%j==0)//如果i能被j整除  就不是质数  退出循环

break

if(j>i/2)

{

count++

printf("%-3d",i)

if(count%5==0)//当每一行有5个数时  换行

printf("\n")

}

}

return 0

}

for(j=2j<=i/2j++)中的 j<=i/2是表示  从j=2开始遍历到j=i/2  看看2~i/2中能否整除i

如果都不能  说明i是质数(也就是j>i/2)

如果有1个及以上能整除i  说明i不是质数

for()

{

}

//for循环结束之后  j的值是大于i/2的  因为for循环的条件是:j<=i/2

//因此  当j>i/2时  for循环结束

if(j>i/2)

这里当且仅当2~i/2都不能整除i时   也就是j>i/2  才说明i是质数

参考资料

输出100以内的质数,用c语言如何编写?.百度知道[引用时间2017-12-25]