素数的封装

求0-100间的素数
分析如下:
如果一个数 m ,能够被从2到 它加 1 的平方根之间的任何一个数整除了,
那么它就是一个合数,
否则,
不能被任何从2到它加 1 的平方根之间的任何一个数整除,
那么它就是一个素数。

public boolean isZhiShu(int number) {
// 判断是否是质数的方法
if (number == 1) {
return false;
}
for (int i = 2; i < number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}



代码实现起来,并不是很难。

那现在我写个方法来把这小应用封装起来,方法参数传入最大值和最小值,返回一个数组。


public int [] ZhiShu(int min, int max){

int data[] = new int[max];
//中间为实现代码
return data;
}


实现这个方法有几种思路,其中唯一的难点就是数组的大小该如何定义,如果只是像上面的代码所写填最大值,那么100个无疑对系统的巨大开销,实际上输出来的数也只有十分之三。
那有没有有几个就装几个的方法呢?
有,而且不止一种,下面来看代码

1.用List来实现:

public int[] ZhiShu(int min, int max) {
List<Integer> list = new ArrayList<Integer>();
Integer it = null;
for (int i = min; i <= max; i++) {
if (isZhiShu(i)) {
it = new Integer(i);
list.add(it);
}
}
int data[] = new int[list.size()];
int index = 0;
Iterator<Integer> itr = list.iterator();

while (itr.hasNext()) {

Integer ite = (Integer) itr.next();
data[index++] = ite;
}
return data;

}



2.用ByteArrayOutputStream来实现.字节输出流

public byte[] ZhiShu(int min, int max) {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
byte k[] = null;
for (int i = min; i <= max; i++) {
if (isZhiShu(i)) {
bo.write(i);
}
k = bo.toByteArray();
}
return k;
}





3.CharArrayWriter 字符输出流

public char[] ZhiShu(int min, int max) {
CharArrayWriter bo = new CharArrayWriter();
char k[] = null;
for (int i = min; i <= max; i++) {
if (isZhiShu(i)) {
bo.write(i);
}
k = bo.toCharArray();
}
return k;
}




以上三种方法,就满足本题的需求而言,第二种方法的效率和开销来说都是最小的,但这个方法一旦超过127就会出问题。
也许还有其它的方法,但由于本人技术实力有限,故只能想出这么多。如果有还希望读者能补充。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值