`

求一定范围内的质数

    博客分类:
  • Java
IE 
阅读更多
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class Main extends MIDlet {

	public Main() {
		System.out.println(prime(100000));
	}

	// 什么是约数?
	// 整数A能被整数B整除,A叫做B的倍数,B就叫做A的约数(现在新教材叫因数)
	// 什么是质数,合数,约数?
	// “素数”,又称“质数”,是指:
	// 除1和其自身之外,没有其它约数的正整数
	// 如 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,...
	// 2是最小的质数,也是唯一的偶质数
	// 质数有无数多个
	// 与素数相对的,有“合数”:
	// 除1和其自身之外,仍有其它约数的正整数
	// 规定:1和0既不是质数,也不是合数
	// 一个数除了1和它本身不再有别的约数,
	// 这样的数叫做质数,也叫素数。20以内
	// 的质数有:2、3、5、7、11、13、17、19
	// 一个数除了1和它本身还有别的约数,这样
	// 的数叫做合数。1和0不是质数也不是合数。20
	// 以内的合数有:4、6、8、9、10、12、14、15、16、18、20。
	// 数a能被数b整除,a就是b的倍数,b就是a的约数。例如:15÷5=3,
	// 那么15是5的倍数,5是15的约数。约数与倍数是相互的,
	// 不能单独说15是倍数,5是约数。在讨论质数、合数、约数、
	// 倍数都指自然数(0除外)。
	public int prime(int num) {// 能求无限大的质数//但如果所求的范围太大,计算的时间需要很久
		long is = System.currentTimeMillis();
		int n, m, i = 0;
		label1: for (n = 2; n <= num; n++) {
			for (m = 2; m <= n / 2; m++) {
				if (n % m == 0)
					continue label1;
			}
			i++;
			// System.out.println("第" + i + "个素数是:" + n);
		}
		long ie = System.currentTimeMillis();
		System.out.println("time=" + (ie - is));
		return i;
	}

	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

	}

	protected void pauseApp() {

	}

	protected void startApp() throws MIDletStateChangeException {

	}

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics