怎么求前50个素数?

最近在看计算机博士的视频,有感

以前 我印象中for循环的循环条件只对于for的i,现在发现,原来还可以用其他条件.只能说长期这么使用造成思维懒惰了

下面放出代码

package d720;

import static java.lang.System.out;

/** * 7/20/2017  1:27 PM */

public class NewPrime2 {   public static void main(String[] args) {//    get previous fiftieth prime      int[] primes = new int[50];      primes[0]=2;      int cnt=1;      label:      for(int i=3;cnt<50;i++){          for(int j=2,s=i;j<s;j++){             if (i%j==0) {                continue label;             }          }          primes[cnt++]=i;      }      out.println(cnt);      int i=0;      for (int prime : primes) {         i++;         out.println(prime);      }      out.println("i+"+i);   }}

首先在一个for循环中使用两套循环,需要先定义一个循环变量,判断条件变成是另外的一套,其次这里的contiune label也基本不用主要就是改变重新开始循环的位置补充一点 关于contine的用法 可以看成是不满足条件 我就不做下面的代码,意思可以是正常会跑,如果出了意外(满足if条件)那么我就不跑下面的代码了是if-else在循环中的另外一种用法因为在很多情况下,你能判断的,只有满足条件的,而不是不满足条件的 即判断条件只能是排除某些条件,而不是直接获得你想要的结果

that‘s all
时间: 2024-11-06 09:25:29

怎么求前50个素数?的相关文章

求前n个素数(C++)

输入一个输n,输出前n个素数. 1 #include<iostream> 2 #include <math.h> 3 using namespace std; 4 5 class Sushu 6 { 7 public: 8 9 Sushu() 10 { 11 num = 2; 12 } 13 14 ~Sushu() 15 { 16 } 17 18 bool isSushu() 19 { 20 for (int i = 2; i <=sqrt(num); i++) 21 { 2

练习-输出前50个素数

public class Test { public static void main(String[] args) { int [] primes = new int[50]; //存放素数的数组 primes[0]=2; //数组的第一个素数是2 int cnt = 1; //标记数组里头存放的素数个数 WP: //标记第一个for循环,方便continue for(int x=3; cnt<50; x++) //从3开始判断,通过将x与数组里的素数取余数,来判断x是否为素数 { for(i

JAVA输出50个素数

public class 前五十个素数 { public static void main(String[] args) { // TODO Auto-generated method stub int i=2,j=2 ,isPrime=1; int count=0 ; for(i=2;count<50;i++) { isPrime=1; for(j=2;j<i;j++) { if(i%j==0) { isPrime=0; break; } } if(isPrime==1) { if(coun

求100之内的素数

题目:求100之内的素数 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数. 1 package com.li.FiftyAlgorthm; 2 3 /** 4 * 题目:判断101-200之间有多少个素数,并输出所有素数. 5 * 程序分析:判断素数的方法:用一个数分别去除2得到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 6 * @author yejin 7 */ 8 public class Prime

利用数组求前n个质数

我的算法思想和实现方式都在代码和注释当中呢,这样的方式确实使算法复杂度降低一个等级,很好啊. #include <stdio.h> #include <time.h> /** * 利用数组求前n个质数 * 确定一个数m是否为质数,可以用已求出的质数对m * 的整除性来确定 */ //如果不知道质数的特性和想不到优化思路的方法 void getNPrimes_normal(); //优化之后的方法 void getNPrimes_optimize(); int main(void)

C语言学习笔记--求100-999之间的素数(用函数调用)

编写函数prime(n),如果n为素数,return 1,否则return 0.在main函数中调用函数prime(n),求100-999之间的素数 1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int prime(int i); 6 int i; 7 for(i=100;i<=999;i++) 8 { 9 prime(i); 10 if(prime(i)==1) 11 { 12 printf("

一道面试题:用多线程求1000以内的素数有多少个?并给出消耗时间

我曾经去一个公司面试,遇到这么一个题目:求1000以内的素数有多少个?用多线程实现,并给出消耗时间.我想了半天,没有想出多线程的解决方案.今天因为机缘到了,我浅谈下我的解法. 这道题,显然得考虑两个问题: 1.多线程的问题 2.算法性能问题 有人觉得1000以内还考虑什么算法性能?这肯定很快.但是话说回来,这个都有必要用多线程吗?如果我们求10000000以内的素数有多少个?是不是必须考虑以上两个问题了?多线程和算法优化的目的都是为了提高程序执行的效率.我们首先来考虑算法问题,什么是素数?素数:

找出前50最耗CPU的SQL语法

-- 找出前50最耗CPU的SQL语法 SELECT TOP 50 qs.total_worker_time/qs.execution_count as [Avg CPU Time], SUBSTRING(qt.text,qs.statement_start_offset/2, (case when qs.statement_end_offset = -1 then len(convert(nvarchar(max), qt.text)) * 2 else qs.statement_end_of

求1-100内的素数(包括100)

public class PrimeNumber { // 求1-100内的素数(包括100) public static void main(String[] args) { int j = 0; System.out.println("输出1-100之间的素数"); for (int i = 2; i <= 100; i++) {// 1既不是苏数,也不是合数 if (i < 4) { System.out.println(i); continue;//注意此处有con