素数是个什么东西 prime number

/**
 * *********************************************************************
 * 只有1和它本身两个正因数的自然数,叫质数(Prime Number)。
 * (如:由2÷1=2,2÷2=1,可知2的因数只有1和它本身2这两个约数,所以2就是质数。
 * 与之相对立的是合数:“除了1和它本身两个因数外,还有其它因数的数,叫合数。”
 * 如:4÷1=4,4÷2=2,4÷4=1,很显然,4的因数除了1和它本身4这两个因数以外,还有因数2,所以4是合数。)
 * 100以内的质数有2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,
 * 73,79,83,89,97,在100内共有25个质数。
 * 注:(1)2和3是所有素数中唯一两个连着的数。
 * (2)2是唯一一个为偶数(双数)的质数。[1]
 * 质数的平方数只有三个因数.
 * ********************************************************************
 * @param args
 * 题目:判断101-200之间有多少个素数,并输出所有素数。
 */

http://baike.baidu.com/link?url=8QA3pGULdreLhTqpdXcyQpSK7MNXqB4FBWA5DN7an2Ic67mGVycJHUcqRAYtdz4yL2V9T7Qq9glfmNGrOEkbx_

import java.util.ArrayList;
import java.util.Scanner;

public class PrimeNumber {
/**
 * *********************************************************************
 * 只有1和它本身两个正因数的自然数,叫质数(Prime Number)。
 * (如:由2÷1=2,2÷2=1,可知2的因数只有1和它本身2这两个约数,所以2就是质数。
 * 与之相对立的是合数:“除了1和它本身两个因数外,还有其它因数的数,叫合数。”
 * 如:4÷1=4,4÷2=2,4÷4=1,很显然,4的因数除了1和它本身4这两个因数以外,还有因数2,所以4是合数。)
 * 100以内的质数有2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,
 * 73,79,83,89,97,在100内共有25个质数。
 * 注:(1)2和3是所有素数中唯一两个连着的数。
 * (2)2是唯一一个为偶数(双数)的质数。[1]
 * 质数的平方数只有三个因数.
 * ********************************************************************
 * @param args
 * 题目:判断101-200之间有多少个素数,并输出所有素数。
 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//根据输入的两个数,输出两数之间的全部素数
		int start = 0, end = 0;
		Scanner input = new Scanner(System.in);
		System.out.println(" 请输入大于1的两个数区间 ");
		while(start <= 1 || end <= 1){
			try{
			start = input.nextInt();
			end = input.nextInt();
			}catch(Exception e){}
		}
		input.close();

		ArrayList list = new ArrayList();//保存判断出来的素数
		for(int i = start; i <= end; i++){
			if(isPrime(i)){
				list.add(i);
			}
		}

		System.out.println(start + " 到 " + end + " 之间的素数是 " + list + "\n总数是 " + list.size());

	}

	/**
	 *
	 * @param int number
	 * @return boolean (true is prime number, false is not prime number);
	 */
	private static boolean isPrime(int i){
		int k = (int) Math.sqrt(i);
		if (i < 3 && i > 0)
			return true;//2、3是唯一连续的两个素数
		for (int j = 2; j < i/2+1; j++){
			if(i%j == 0)	//如果余数为0,表示被1和自己之外的数整除了,即非素数,属于合数
				return false;
		}
		return true;
	}
}

根据素数定义,判断一下,除了1和本身之外的数字,只要不能把本身整除,那么证明这个数字就是素数了。

因此想要从1到数字本身一次判断余数是否为0,

然后又想,当循环超过数字本身一半之后就已经不可能在有整除的情况出现了,因此,循环可以减少一些,控制条件改正 本身除以2

但是对于4这样的小数的时候有问题,因此修改为 本身/2+1,这样可以了。

看到很多地方使用的是  Math.sqrt(本身);   表示不明所以。

时间: 2024-08-29 09:47:42

素数是个什么东西 prime number的相关文章

10 001st prime number

这真是一个耗CPU的运算,怪不得现在因式分解和素数查找现在都用于加密运算. By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10 001st prime number? def isprime(n): boolisprime = True for i in xrange(2,n): if n % i == 0: bool

我的Java开发学习之旅------&amp;gt;求N内所有的素数

一.素数的概念 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数. 根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积:而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的.最小的质数是2 二.算法 算法1.  开根号法:如果一个数(>2),对这个数求平方根,如果这个数能被这个数的平方根到2之间的任何一个(只要有一个

Python-高阶函数习题练习

本文是针对map(),reduce()和filter()三个高阶函数的程序练习. map()概念 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的列表返回. ##### 题目 > 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.> 例如输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart'] 1 2 3 4 5 6 >>>

iOS - C 应用

前言 1)操作符两端必须加空格,(每行第一个赋值语句对齐). 2)变量名必须是英文(不能是拼音):英文.数字.下划线和美元符号. 3)等于号 == 反过来写(0 == i%4)防止少些赋值号的错误. 4)通常不省略分支括号. 1.应用 1)质数(素数):质数(prime number)又称素数,有无限个.一个大于 1 的自然数,除了 1 和它本身外,不能被其他自然数整除,换句话说就是该数除了 1 和它本身以外不再有其他的因数:否则称为合数. 2)瑞年:瑞年的条件能满足以下条件之一即可: 1> 能

[usaco] 回数中的素数Prime Palindromes

题目给出一个下限,一个上限,要求求出之间的所有既是回数又是素数的数. 下边是原文描述: Prime Palindromes The number 151 is a prime palindrome because it is both a prime number and a palindrome (it is the same number when read forward as backward). Write a program that finds all prime palindro

UVa 10924 Prime Words:素数

10924 - Prime Words Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1865 A prime number is a number that has only two divisors: itself and the number one.

poj 2739 Sum of Consecutive Prime Numbers【素数筛】

我觉得这题的数据应该有些刁钻,一共至少提交了五次,一直是WA,无语了......用一个result数组存素数硬是不对.后来就算了,改用直接判断(法二),继续WA,后来发现是MAXN至少应为10002(被数据坑了),终于A掉了...... 后来继续改法一多次,任然WA,一直不清楚原因. 继续思考发现有一个很隐蔽的问题就是我后来用到   if(result[i]>n) break;    而result数组中 10000以内 最后一个素数是 9997,后面全是0了.这样无法停止,所以必须加一个大数作

素数最短距离算法

#include <cstdio> #include <cstring> #include <cmath> using namespace std; #define MAX_LENGTH 50000001 bool prime[MAX_LENGTH]; void CreatePrimeTable() { int i, j; memset(prime, true, sizeof(prime)); // 初始化全为1 prime[0] = prime[1] = false;

【Python学习】打印10000以内的所有素数

普及一下素数,初中学的都忘记了 百度:质数(prime number)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数. 基本判断思路:在一般领域,对正整数n,如果用2到之间的所有整数去除,均无法整除,则n为质数. 质数大于等于2 不能被它本身和1以外的数整除 好了,python代码怎么写,百度给出了是否是素数的答案,结合这函数直接判断打印输出 from math import sqrt #定义一个是否素数函数,如果n等于1,则返回false def