Java编程

Java编程,第1张

这是经典的找质数的程序。关键在两个循环。

外层循环 for(i=1i<=20i++){……} 表示找 1~ 20 以内的质数(注意:这里没有把 1 排除掉)。

内层循模铅坏 for(j=2j<=i/2j++){……} 做的事情就是检查是否是质数:if(i%j == 0) 判断当前的 i 能否被当前的 j 整除,因为理论上质数是不能被这个 j 整除的,如果能整除或者循环自然结束就跳出内部循环,到 if(j>i/2) 这条,在这里可以判断是什么原因跳出的内层循环,如果是因为整除跳出的,说明这个 i 不是质数,就不做处理;如果是循环自然结束,那么说明这个 i 是质数,把它打印出来。

然后看一下 j 从 2 到 i/2 的原因,质数的定义本来是“不能被任何除了1 和它本身以外的自然迅早数整除的自然数”,不过所有的自然数都不能被大于它的自然数整除,所以不用考虑了,1 和它本身也不用考虑了,而且如果 i 能被 j 整除,那么 i 一定能被 i/j 整除,商和除数可以互换。那么最多只要考虑一半的情况,所以 j 算到 i/2。实际上可以算到 i 的平方根,但是算平方根比较麻烦,还不如旦昌好就算到 i/2。

boolean[]

b=new

boolean[1000]//把1也算了进去

for(boolean

h:b){h=true}

for(int

i=2i<1000i=i+1){

if(int

i1=1i1<=1000i1=i1+1){

if(i1%i==0&&i1/i>1){/镇巧/除去1

13/13=0

13/13=1

不会竖困出御纤键现

13/1

因为i从2算起

b[i1-1]=false

}

}

}

我没有DrawingPanel,我给你找出稿亩伏来质数,你自己加进去函数吧。我把质数都放到一个list里面。

public static List<Integer>getPrime(){

List<Integer>键携 list=new ArrayList<Integer>()

System.out.println("please input a number greater than 10")

Integer in=Integer.valueOf(new Scanner(System.in).nextLine())

for(int i=2i<=ini++){

int j

for(j=2j<耐孝=ij++){

if(i%j==0){

break

}

}

if(i==j){

list.add(i)

System.out.println(i+"是质数")

}

}

return list

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12234093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存