求质数(素数)

我计算了一下10以内的素数,控制台打印如图:

    public static void main(String[] args) {
        System.out.println("10以内的素数是:");

        for (int i = 0; i <= 10; i++) {
            if (isSuShu(i)) {
                System.out.println(i + "是素数");
            }
        }

    }

判断是否是素数的方法:

    public static boolean isSuShu(int n) {
        if(n<=1) return false;//1不是素数
        double sqrt = Math.sqrt(n);
        for (int i = 2; i <= sqrt; i++) {
            if (n % i == 0)
                return false;
        }
        return true;
    }

原文地址:https://www.cnblogs.com/zhuwansu/p/12255082.html

时间: 2024-10-31 04:48:20

求质数(素数)的相关文章

每日一小练——求质数

上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:求质数 内容: 试编写一个程序,找出前N个质数.如果没有进一步要求,这不是难题.但在此希望从所知的.使用除法的方法中,用最快的办法来编写程序. 我的解法:上来没多想,打开vs2013就敲了起来,问题果然很简单,分分钟就超神..奥,不对就解决了!这个题目确实很简单,先看看常规解法吧! #include <iostream> #include <math.h> #define endNum 200 using

求质数两个方法的好坏分析(是否易懂,操作次数,运算复杂度时间)

方法1: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <malloc.h> 4 #include <stdbool.h> 5 6 int main() 7 { 8 long i,j,n,ans=0; 9 //vis[x]若为true,则代表质数,若为false,则不是质数 10 bool *vis=(bool *) malloc (sizeof(bool)*100000001); 11 long

求质数的方法解析

质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数.换句话说,只有两个正因数(1和自己)的自然数即为素数.比1大但不是素数的数称为合数.1和0既非素数也非合数.合数是由若干个质数相乘而得到的.所以,质数是合数的基础,没有质数就没有合数. 求素数的方法有很多种,最简单的方法是根据素数的定义来求.对于一个自然数N,用大于1小于N的各个自然数都去除一下N,如果都除不尽,则N为素数,否则N为合数. 但是,如果用素数定义的方法来编制计算机程序,它的效率一定是非常低的,其

求质数的各种算法

首先声明本人水平有限,仅仅做一下记录,有错的地方请指正,文章垃圾请包容!! 在网上不小心浏览到一篇技术博客,叫做<求质数算法的N种境界(N>10)>,写得很好,有兴趣的读者自己去搜索.然后就想自己去试试这篇博客里写得各种求质数的方法. 不想搭环境,就暂时用了PHP语言,在apache里运行,简易测试一下. 首先明确一下概念 质数(prime number)又称素数,有无限个.质数定义为在大于1的自然数中, 除了1和它本身以外不再有其他因数的数称为质数. 100以内质数表 2 3 5 7

简化求质数算法

前几天做了个求质数题,这两天浏览算法题库,偶然看到了原题以及程序分析: 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则为素数. 这样一来不用除到自身了都,显然更简单,同时还要对之前的方法进行点小修改,将记录是否为质数的boolean变量都去掉,哈哈,是不是很激动的想知道答案??? 话不多说都在代码里: var min = 100; var max = 200; for(var i = min; i <= max ; i++) { for(var j = 2; j <=

电影里的代码之《机械姬》:筛法求质数

今天看了<机械姬>,探讨人工智能话题的电影,豆瓣评分7.5,还是蛮不错的一部电影.影片1:09:29处出现了一段python代码,细看了一下,发现是筛法求质数的python代码,写得非常简练的.先贴个电影的截图: 影片里的代码略微有点模糊,我重新打一遍,是下面这个样子的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #coding:utf8 import sys def sieve(n):    

C语言求质数的算法

前言 上次被出了一题质数的C语言求解题目(面试),当时用了最粗暴的算法,回来仔细参考资料,其实答案有很多种: 1,小学生版本: 判断 x 是否为质数,就从 2 一直算到 x-1. static rt_uint32_t array1[ARRAY_LEN]; void func1(void) { for (rt_uint32_t i = 1; i <= ARRAY_LEN; i++) { array1[i - 1] = 0; } rt_uint32_t x, y = 0, z = 0; rt_uin

求质数方法大总结

最近知乎上看到一道求2000000之内的质数的个数~最近总结了下求质数的方法, 也就顺带总结了下求质数的方法 1.蛮力法求质数 1 public class PrimeTest1 2 { 3 public static boolean isPrime(int numPrime) 4 { 5 for (int i = 2; i < numPrime; i++) 6 { 7 if (numPrime % i == 0) 8 { 9 return false; 10 } 11 } 12 return

求质数数量 - 空间换时间

质数:被自己本身和1整出的数 int getPrimeCount(int value){ int count = 0; int arr[301] = {0};// 0 - is prime , 1 - is not prime int num = (int)sqrt((float)value); for(int i = 2; i <= num ; ++i){ if (!arr[i]){ for(int j = i; i * j < value; ++j){ arr[i * j] = 1; }

求质数的几种算法

1.根据质数的定义求 质数定义:只能被1或者自身整除的自然数(不包括1),称为质数. 利用它的定义可以循环判断该数除以比它小的每个自然数(大于1),如果有能被它整除的,则它就不是质数. 对应代码是: void printPrime(int n){//判断n是否是质数         boolean isPrime=true;//是否是质数的标志         for(int i=n-1;i>1;i—){//n除以每个比n小比1大的自然数 if(n%i==0){//如果有能被整除的,则不是质数