输出100以内的质数,用c语言编写

Python09

输出100以内的质数,用c语言编写,第1张

#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]

代码如下:

/*

* 输出 1~20 之间的质数

*/

#include <stdio.h>

#include <math.h>

//判断一整数是否为质数

int isprime(int n)

{

int i

int up

int ret = 1

up = sqrt(n)

for (i=2i<=upi++) {

if (n%i==0) {

ret = 0

break

}

}

return ret

}

//主函数

int main()

{

int n

printf("1~20 之间的质数有:")

for (n=2n<20n++) {

if (isprime(n))

printf("%d ", n)

}

printf("\n")

return 0

}

运行程序,输出如下:

1~20 之间的质数有:2 3 5 7 11 13 17 19

#include <stdio.h>

static char m[8000000]

static int prime[500000]

#define MAX_N 7368787

void set(void)

{

    int i,j

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

    {

        if(m[i] == 1) continue

        for(j=i+i j<=MAX_N j+=i)

            m[j]=1

    }

    for(i = j=0 i<=MAX_Ni++)

        if(m[i]==0) prime[j++]=i

}

int main()

{

    int m,n,

    while(~scanf("%d%d",&m,&n))

    {

        

        for(i=mi<=ni++)

        {

            printf("%d",prime[i-1])

            if(i==n || (i-m)%10==9) putchar('\n')

            else putchar(' ')

        }

    }

    return 0

}