我的第一个程序:Java筛法求质数
来源:互联网 发布:库里15-16赛季数据统计 编辑:程序博客网 时间:2024/05/01 01:56
自己编的第一个程序啊,不是照着书敲代码。
正在看Java语言程序设计基础篇,有一个帖子说陈景润其实没有证明“1+2”,百度,哥德巴赫猜想百科里有筛法求质数,看到后很有感觉,书上的求质数是直接判断每一个数,算法不够好,我想编一个筛法的,不知道会不会好一些。于是边学边写。。。。。。
成功了,很高兴,但是不知道是电脑的问题,还是算法本身就好的不明显,或者是我对它期望太高,等等,总之没感觉特别快。
代码附上,将来看一看,肯定觉得很傻。
package aa;
import javax.swing.JOptionPane;
import java.lang.Math;;
public class PrimeNumber {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 输入指数对话框
String input = JOptionPane.showInputDialog(null,
"请输入指数:","求10的多少次方以内的质数?",
JOptionPane.QUESTION_MESSAGE);
long exponent = Integer.parseInt(input);
// 是否只显示个数对话框
Object[] possibleValues = { "只显示个数", "显示所有结果"};
Object selectedValue = JOptionPane.showInputDialog(null,
"请选择", "是否只显示个数?",
JOptionPane.INFORMATION_MESSAGE, null,
possibleValues, possibleValues[0]);
// 计时开始
long startTime = System.nanoTime();
// 数组用于存储结果
long[] myList={2};
outer:
for(long i = 3; i < Math.pow(10,exponent); i++){
inner:
// 如果能被已有素数整除,则不是素数
for(long value:myList){
if(i%value == 0)
continue outer;
}
// 将新判断的素数加到数组末尾
long[] targetList = new long[myList.length + 1];
System.arraycopy(myList, 0, targetList, 0, myList.length);
targetList[myList.length] = i;
myList = targetList;
}
// 加空格,调整输出格式
int row = 30;//每行显示30个
String result = " ";
for(int i = 0;i < myList.length;i++){
result += myList[i];
result += ((i + 1) % row == 0)?"/n":" ";
}
// 计时结束
double estimatedTime = System.nanoTime() - startTime;
String see;
if(selectedValue == "只显示个数")
see = "经过" + estimatedTime/1000000000 +
"秒计算出有" + myList.length + "个:/n";
else
see = "经过" + estimatedTime/1000000000 +
"秒计算出有" + myList.length + "个:/n"+result ;
// 输出结果
JOptionPane.showMessageDialog(null,see,
"10的" + exponent + "次方以内的质数",
JOptionPane.INFORMATION_MESSAGE);
}
}
- 我的第一个程序:Java筛法求质数
- [java]我的第一个java 程序
- 我的第一个java程序
- 我的 第一个JAVA程序
- 我的第一个JAVA程序
- 我的第一个JAVA程序
- 我的第一个JAVA小程序
- 我的第一个Java交互程序
- 我的第一个JAVA程序
- 我的第一个Java程序
- 我的第一个Java程序
- 我的第一个Java程序
- 我的第一个java小程序
- 我的第一个applet java程序
- 我的第一个java程序
- 我的第一个Java程序
- 我的第一个Java程序
- 我的第一个JAVA程序
- 服务器推送技术
- wince6.0 R3 (silverlight for Embedded)新技术组件的添加
- Netbeans 下 配置C/C++编译环境
- 为控件后台添加属性
- Unix normal command
- 我的第一个程序:Java筛法求质数
- Wince中MFC对话框中添加菜单项的做法 (平台是VS2005)
- Zero a pod-struct object
- 电力载波通讯PLC行业及芯片的分析
- linux网络接口源码的结构(转载)
- 联通VAC WebService接口
- 配置WEB安全
- 随机抽取表中的记录
- Eclipse设置多个调试端口