C语言,输出3-1000之间的所有素数,要求每行输出5 个

要求:不自定义也不调用新函数,用最简单的那种方法做(刚入门C语言也可以看得懂的方法),谢谢各位大佬.

写了一个比较简单的,里面只有循环跟逻辑运算哦


#include<stdio.h>

    int main() {

        int i, j, BOOL = 1, count = 0;

        printf("3~1000的素数有:\n");

        for (i = 3; i <= 1000; i++)

        {

            for (j = 2; j < i; j++) {

                if (!(i % j))

                {                    

                    BOOL = 0;

                    break;

                }

                else

                    BOOL = 1;                    

            }               

            if (BOOL)

            {

                count++;

                printf("%-5d", i);

                if (count % 5 == 0)

                    printf("\n");

            }

        }

    }


温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-02

您好,这样编程就可以了 


#include <stdio.h>

int sushu(int n)

{

  int i;

  for(i = 2; i < n; i++)

  {

    if(n % i == 0)

      return 0;

  }

  return 1;

}

int main ()

{

  int n, m, j = 0;

  for(n = 3; n <= 1000; n++)

  {

    m = sushu(n);

    if(m == 1)

    {

      printf("%d ", n);

      j++;

      if(j % 5 == 0)

        printf("\n");

    }

  }

  return 0;

}

追问

是对的,但是您定义了一个新函数int sushu(int n),我想要不定义新函数的,谢谢

追答

我重新写过一次了,记得采纳哦
#include
#include
int main()
{
int i,m,count=0;
for(m=3;msqrt(m))
{
printf("%d ",m);
count++;
if(count%5==0)
printf("\n");
}
}
}

追问

您好,程序是对的,但是,,,,,额,,,有几个地方我看不懂,,,能解释一下吗,万分感谢
for(m=3;msqrt(m)),为什么满足此条件就是素数?

追答

    因为偶数一定不是素数,可以被2整除,这样直接加2可以节省效率。

    i<m也是可以的,但是i<sqrt(m)也可以,这样的效率更高,这是数学家证明过的。

    break跳出里面那个for循环

    因为假如不是素数的话,那么里面那个for的i一定会全部执行完,此时跳出循环的i肯定是等于sqrt(m)+1了,所以可以用i>sqrt(m)来判断

本回答被提问者采纳
相似回答