java求素数算法

求100内的素数:

   public void a() {
            for (int i = 2; i <= 100; i++) {
                int temp = (int) Math.sqrt(i);
                // 我把那个aqrt单独提出来,这样速度稍微快一点,虽然在100内变化不大,但如果是10000000内的素数呢?
                if (i <= 3) {
                    System.out.println(i + " is a prime");
                } else {
                    for (int j = 2; j <= temp; j++) {// 把Math.sqrt(i)转换为int类形
                        if (i % j == 0) {
                            break;
                        }
                        if (j >= temp) {
                            System.out.println(i + " is a prime");
                        }
                    }  

                }
            }
        }  

(二)求n-m间的素数

  public void sushu(int n ,int m){
            for (int i = n; i < m; i++) {
                int temp = (int)Math.sqrt(i);
                if(i<=3){
                    System.out.println(i);
                }
                for (int j = 2; j <= temp; j++) {
                    if(i%j==0){
                        break;
                    }
                    if(j>=temp){
                        System.out.println(i);
                    }
                }
            }
        }

时间: 2024-08-09 11:59:24

java求素数算法的相关文章

Java求素数

Java求素数 package test1; import java.util.*; public class Demo { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int a = scan.nextInt(); if(a==2){ System.out.println("2"); System.exit(0); } for(int b=3;b<a;b++) {

几种简单的求素数算法的复杂度分析

素数的算法有很多种,现在主要讲两种算法及其改进版本的复杂度分析,解释性能提升的幅度.现以求100000内素数为例,两种算法分别是: 1.基础思路是去掉偶数,包括取模的范围,代码如下: print(2) for i in range(3,100000,2): for a in range(3,int(i*0.5)+1,2): if i%a == 0: break else: print(i,end = ' ')此两层循环的算法的复杂度为0.5n((n**0.5+1)/2) 2.应用一个素数定理:大

补:用布尔常量求素数算法

输入代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2014年12月26日 *版 本 号:v2.0 * *问题描述:输入若干个正整数,将其中的素数输出来. *程序输入:个数不确定的正整数 *程序输出:输出数据中的素数 */ #include <iostream> #include <cmath> using namespace std; bo

【算法】普通方法和筛选法求素数

素数指的是因子只有1和本身的数(1不是素数),求解素数在数学上应用非常广泛,而求解n以内的素数也是我们编程时常遇到的问题,在这个问题上,筛选法求解素数运行得非常快.下面首先介绍如何判断一个是不是素数,然后介绍用普通方法求n以内的素数,接着是筛选法求n以内的素数,最后是两种算法的运行时间比较 判断一个数是不是素数 算法思想:判断小于等于一个数的平方的所有大于1的整数是不是能整除这个数,如果能,则表明这个数不是素数:反之,则是素数. //判断一个数是否为素数 bool isPlain(int val

java怎么求素数

素数:大于1,只能被1和自身整除 1 public static boolean isSuShu(int num){ 2 if(num<=1){//大于1 3 return false; 4 } 5 if(num==2||num==3){ 6 return true; 7 } 8 int count=1;//你能整除其他值得次数 9 10 for(int i=2;i<=num;i++){ 11 if(num%i==0){ 12 count++; 13 } 14 if(count>2){/

蓝桥杯 算法训练 Torry的困惑(基本型)(水题,筛法求素数)

算法训练 Torry的困惑(基本型) 时间限制:1.0s   内存限制:512.0MB 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7--这样的数叫做质数.Torry突然想到一个问题,前10.100.1000.10000--个质数的乘积是多少呢?他把这个问题告诉老师.老师愣住了,一时回答不出来.于是Torry求助于会编程的你,请你算出前n个质数的乘积.不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值. 输入格式 仅包含一个正整数n,其中n<=100

[转载]基础算法——筛法求素数

以下来自http://blog.csdn.net/stack_queue/article/details/53560887 求素数是程序设计比赛中经常遇到的问题,最基本的方法是通过素数的定义直接判断,只能被1和它本身整除的数就是素数了.这种方法适合判断单个数是否为素数,当要求一个范围内素数而这个范围又比较大时,这种方法就不太使用了,甚至程序要运行几分钟才能算出结果. 筛法的思想是去除要求范围内所有的合数,剩下的就是素数了,而任何合数都可以表示为素数的乘积,因此如果已知一个数为素数,则它的倍数都为

JAVA 基础编程练习题27 【程序 27 求素数】

27 [程序 27 求素数] 题目:求 100 之内的素数 package cskaoyan; public class cskaoyan27 { @org.junit.Test public void prime() { int mix = 1; int max = 100; for (int i = mix; i <= max; i++) { if (isPrime(i)) { System.out.println(i); } } } private boolean isPrime(int

java每日小算法(27)

/* [程序27]  题目:求100之内的素数    */ package test; import java.util.Scanner; public class test { public static boolean prime(int number) { boolean flag = true; int mid = (int)Math.sqrt(number); for(int i = 2; i< mid+1; i++) { if(number % i == 0) { flag = fa