求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;

原文地址:https://www.cnblogs.com/qiannianguyao/p/11886354.html

时间: 2024-10-10 13:29:16

求1到200之间的素数的相关文章

求100到200之间的素数

质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数. /** * 判断100 ~ 200间素数的个数 * * @author Administrator */ public class IsPrime { public static void main(String[] args) { // 遍历100 ~ 200 之间的素数 for (int i=100; i<=200; i

C语言打印100—200之间的素数

质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数.  根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积:而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的.最小的质数是2. 目前为止,人们未找到一个公式可求出所有质数. C语言代码如下:     # include <stdio.h> int main()   

打印100~200 之间的素数

编写思想:对100到200之间的数依次进行for循环判断,看其是否为素数.判断方法:对于一个自然数,除了1以外,不是素数就是合数.若该数字是素数,则不能被除了1和它自身以外的数整除:而一个数如果是合数,则它的所有因子不会大于对其开根号所得出的数,由此可得出每个数最多时候的循环次数. 初次生成的源代码如下: #include<stdio.h> #include<math.h> int main() { int primer,variabe,sign; for(primer=101;p

c语言打印100~200之间的素数

素数即就是该数除了1和它本身以外不再有其他的因数,否则称为合数. 找寻100~200之间的素数的算法:让a被2~√a除,若a不能被整除,则a是素数. #include<stdio.h> #include<math.h> int main() {    int a,k,i;//数a     printf("100~200以内的prime\n");      for (a=101;a<=200;a=a+2)   {  k= sqrt(a);    for (i

Java基础知识强化04:判断101~200之间有多少素数

判断101~200之间有多少素数? 1 package himi.hebao; 2 3 /** 4 * (1).编写函数isPrime()用来判断输入数据是否为素数 (2).遍历判断101~200之间的数据是否为素数,并且计数count 5 * 6 * @author Administrator 7 * 8 */ 9 10 public class TestDemo05 { 11 12 public static void main(String[] args) { 13 int count =

8.求出100~230之间所有素数之和,先在屏幕上输出,再求和

#include <iostream>#include <cmath>//可以使用一些内置函数using namespace std;int isprime(int x);int main(){    int m,n;    for(m=101;m<230;m++)    {       if(isprime(m))            cout<<m<<endl;    }    for(m=101;m<230;m++)    {     

【c语言】将100~200之间的素数输出

// 将100~200之间的素数输出 #include <stdio.h> #include <math.h> int main() { int i,j; printf("100~200之间的素数如下:\n"); for(i = 101; i <= 199; i++ ) { for( j = 2; j <= sqrt(i); j++ ) { if( i % j == 0 ) break; } if( sqrt(i) < j ) printf(&

求100到200之内的素数和判断是否是闰年

1,求100到200内的素数 list = [] for a in range(100,200) k=0 for i in range(2,a) if a%i==0: list.append(a) print(list) def fun(): year = int(input("输入一个年份:")) if (year%400 == 0) or (year%4==0 and year%100 != 0): print("您输入的年份[%d]是润年"%year) els

100到200之间的素数输出(初)

100到200间的素数的输出(初) #include<stdio.h> main() { int i; int j; printf(100~200间的素数有:\n); for(i=100;i<=200;i++) { for(j=2;j<i;j++) { if(i%j==0) break; } if(i==j) printf("%d ",i) } return 0; }