打印从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("\t\t\t   素数判定小程序\n\n");

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

          scanf("%d",&n); 

         while(n--)

         { 

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

            scanf("%d",&k);

            printf("1到%d之间的素数为:\n\n",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("\n\n");

           system("pause");

          system("CLS");

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

       }  

     }

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

上一篇:ubuntu1404安装搜狗输入法后出现黑框的问题


下一篇:Django 2.0 学习(04):Django数据库