求1到200之间的素数

Posted qiannianguyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求1到200之间的素数相关的知识,希望对你有一定的参考价值。

public class Test5 {
    public static void main(String[] args) {
        int j;
        for(int i= 2;i<=200;i++){
            j=2;
            while (i%j!=0){
                j++;
                if(i==j){
                    System.out.println(i);
                }
            }
        }
    }
}

自己的思想存在误区,受冒泡排序影响过甚

冒泡排序

public class demo{
    public static void main(String[] args) {
        int[] numbers =new int[]{1,5,8,2,3,9,4};
        int i ,j;
        for(i=0;i<numbers.length;i++){
            for(j=0;j<numbers.length-1-i;j++){
                if(numbers[j]<numbers[j+1]){
                    int tem = numbers[i];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;
         }
            }
        }
         System.out.println("从大到小排序后的结果是:");
        for(i=0;i<numbers.length;i++)
            System.out.print(numbers[i]+" ");
    }
}    

冒泡排序,总之遍历外层,然后相邻的数字两两比较,然后定制交换规则,两两交换,主要注意j的条件j<numbers.length-1-i即可

对于该题找出素数

错误思想的代码

public class Test8 {
    public static void main(String[] args) {
        for (int i=1;i<201;i++){
            for(int j=1;j<i;j++){
                if(i%j!=0){
                    System.out.println(i);
                }
            }
        }
    }
}

输出一连串1到200的数,且有重复。

技术图片

思想如果一个数从1到200,然后这个数除以从2到该数本身-1,如果整除没有0,则该数为素数。

后来仔细想了以下,如果i =6的时候,那么j可以为1到5,然后能让6除以1到5之间的数并且没有余数的只有当j=4,j=5的时候,所以会输出两次6。

所以这种遍历不合理,应该是当遍历到1-5的时候,当遍历到2的时候已经不满足条件,这个时候应该直接摒弃6,i的值+1,而不是再继续遍历,这样总会有不能整除的数,导致输出不是素数的6.

重新审视正确答案

外层依然遍历从2到200的数,内存循环换成while循环,while循环条件依然为i%j!=0,当满足这个条件之后,才可以j++,然后当i==j的时候,这个时候才可以输出i。

for循环和while循环的适用性(如果循环次数在执行循环体之前就已确定,一般用for语句;如果循环次数是根据循环体的执行情况确定的,一般用while语句或者do-while语句。)

注意赋值j要在外层循环下赋值,如果一开始直接int j=2;

以上是关于求1到200之间的素数的主要内容,如果未能解决你的问题,请参考以下文章

50—100间的素数

求1到100以内所有素数之和(c语言)

用c语言求500到1000的素数

求100~200之间的素数

求100到200的素数

求100到200的素数