看板java
标 题Re: [问题] 找出第几个质数
发信站SayYA 资讯站 (Thu Jun 1 11:31:30 2006)
转信站ptt!ctu-reader!news.nctu!SayYa
※ 引述《[email protected] (BER)》之铭言:
> import java.util.Scanner;
> public class DD{
> public static void main(String[] args){
> Scanner scanner = new Scanner(System.in);
> System.out.print("请输入测试的数字:");
> int d =scanner.nextInt();
> int x=d;
> int i,y,count=3;
> int[] arr =new int[100];
> for(int ar=0;ar<100;ar++)
> arr[ar]=ar;
> arr[1]=2;
> arr[2]=3;
> for(i=5;i<x;i++)
> {
> for(y=2;y<i;y++)
> {
> if ((i%y)==0)
> break;
> }
> if((i%y)!=0) {
> arr[count]=i;
> count++;
> }
> }
> for(int z=1;z<100;z++)
> {
> if(arr[z]==x)
> System.out.println(z);
> }
> } }
> 这个程式是输入一个数字判断他是第几个质数
> 但是我找不出我哪个有问题..
1. 您没有质数表
2. 您也没说您有什麽问题
建议改善的方法:
使用Sieve of Eratosthenes质数演算方式
先列出2~x的所有数列(可以存在list中)
由第一项(A1)开始(也就是2,是一个质数)到第An项,也就是值为x那一项
用第i项去除余所有i+1, i+2...n的项目,可以整除的都不是质数(不是的删掉)
第i项检查完毕,再由i+1项去除余i+2, i+3...n
最後,如果你输入的x是质数(不是的早被删掉了)
那x在那一项就是第几个了
--
※ Origin: SayYA 资讯站 <bbs.sayya.org>
◆ From: 163.26.34.214