因为上机实验,自己写了这个程序。以前学过C/C++,可能是根深蒂固,感觉写出来的JAVA程序似乎和用C写区别不大,是现在还没有体现出来?呵呵。
不知道各位对这个编程问题有没有什么好的方法?觉得自己方法有点笨,呵呵。
import java.io.*;
public class Prime1{
public static int isPrime(int t){
for(int i=2;i<t;i++)
if(t%i==0)
return 0;
return 1;
}//判断一个给定的数是否为素数。
public static void main(String args[]){
int i,j,k,m,n,o,p;
int line=5;
int MAX;//上届
System.out.println("请输入您要计算的偶数的上界:");
try{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String t=in.readLine();
MAX=Integer.valueOf(t).intValue();
}catch(Exception exc){
System.out.println("您的输入不正确!");
return;
}//输入上届
for(i=4;i<=MAX;i=i+2){
j=i/2;
k=isPrime(j);
if(k==1){
line++;
if(line%5==0)
System.out.println();
System.out.print(" "+i+"="+j+"+"+j);
}//判断该数的一半是否为素数
else{
for(m=j-1;m>0;m--){
n=isPrime(m);
if(n==1){
p=i-m;
o=isPrime(p);
if(o==1){
line++;
if(line%5==0)
System.out.println();
System.out.print(" "+i+"="+m+"+"+p);
break;
}//如其一半不为素数,则向前查找一个素数,求原数减去该素数所得时候为素数。
}
continue;
}
}
}
}
}
不知道各位对这个编程问题有没有什么好的方法?觉得自己方法有点笨,呵呵。
import java.io.*;
public class Prime1{
public static int isPrime(int t){
for(int i=2;i<t;i++)
if(t%i==0)
return 0;
return 1;
}//判断一个给定的数是否为素数。
public static void main(String args[]){
int i,j,k,m,n,o,p;
int line=5;
int MAX;//上届
System.out.println("请输入您要计算的偶数的上界:");
try{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String t=in.readLine();
MAX=Integer.valueOf(t).intValue();
}catch(Exception exc){
System.out.println("您的输入不正确!");
return;
}//输入上届
for(i=4;i<=MAX;i=i+2){
j=i/2;
k=isPrime(j);
if(k==1){
line++;
if(line%5==0)
System.out.println();
System.out.print(" "+i+"="+j+"+"+j);
}//判断该数的一半是否为素数
else{
for(m=j-1;m>0;m--){
n=isPrime(m);
if(n==1){
p=i-m;
o=isPrime(p);
if(o==1){
line++;
if(line%5==0)
System.out.println();
System.out.print(" "+i+"="+m+"+"+p);
break;
}//如其一半不为素数,则向前查找一个素数,求原数减去该素数所得时候为素数。
}
continue;
}
}
}
}
}
解决方案 »
- 分享javase的基础题(以为学的很好,但是做起来很纠结)
- 跪求不定长二维数组交叉组合算法(转至 数据结构与算法 板块)
- 求教 二叉树!
- 问个问题~~
- 打成.jar时碰到的问题
- 一个百思不得其解的问题!
- 在哪儿下载sun公司的java的apis文档,清给出具体的下载地址号么,谢谢
- 想把一个String字符串分成两个,用什么方法好?
- 我下载了java开发大全这本电子书,解压后,所有的文件名是:
- PreparedStatement.close()的问题
- 哪有包含jaxb的jwsdp-2_0-windows-i586文件下载? sun的网站下载不了
- 求助,用JAVA写base64的decode和encode方法,不用SUN的包
int sqrt = (int)Math.sqrt(t);
for (int i = 2; i <= sqrt; i++)
而且可以考虑将判断为素数的数字保存起来,再保存已经计算过的最大t值,
以后isPrime就先从这个素数集合开始判断,
如果不在集合中并且t 大于已经计算过的最大t值才继续往下计算
恩,在网上也看到过先建立一个素数集合的,回去再添加一个方法把吧,实现这个功能……
谢谢,呵呵。