打印从1到k之间的所有素数

                                                          

      问题分析:素数是指大于1且只能被它本身和1整除的数,根据定义可以从2开始对一个数取余数一直到它本身,若它有第三个整除数,则可以判定它不是素数。若使用这种方法,会浪费时间,我们可以判断2到这个数的算术平方根之间有没有它的整除数。现在程序不仅是要判定素数,还要打印1到k之间的素数。

     程序源代码

      #include<stdio.h>

      #include<stdlib.h>

      #include<math.h>

      main()

    {

          int m,n,i,j,k;

          printf("    素数判定小程序 ");

          printf("请输入测试数据组数: ");

          scanf("%d",&n); 

         while(n--)

         { 

            printf("请输入截止数: ");

            scanf("%d",&k);

            printf("1%d之间的素数为: ",k);

              for(j=2;j<=k;j++)

            { 

                  m=(int)sqrt(j);

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

                   if(j%i==0)

                      break;

                   if(i>m)

                 printf("%d ",j);

 

            } 

           printf(" ");

           system("pause");

          system("CLS");

         printf("    素数判定小程序 ");

       }  

     }

 

程序分析:程序中用了两个for循环,外循环的作用是确定要打印数的区间,内循环的作用是判定一个数是否是素数,然后打印。所以说内循环是关键,倘若j是素数,那么内循环中i的最终值一定是i+1,所以若i>m,那么j就一定是素数。

原文地址:https://www.cnblogs.com/hechuxunni/p/5168711.html