public class J_inttobinary {
public static void main(String arg[]) {
int temp = 0;
int NUM = 0;
for (int i = 50; i <= 100; i++) {
for (int j = 2; j <= i / 2; j++) {
if ((i % j) == 0)
temp = 1;
}
if (temp == 0) {
NUM++;
Systemoutprintln("从50到100的第" + NUM + "个素数为" + i);
}
temp = 0;
}
}
}
求1-N以内的所有素数,实现思路如下:
1、 得到1到n之间的素数,存到一个ArrayList集合。
2、判断一个数是不是素数:只能被1和本身整除
说明:从2开始除,不需要到n,也就是循环条件是 < n 就可以,这之间只要被整除了,那么他就不是素数了。
3、设置主函数,运行 getPrimeNumberToN获取限定范围内的素数。
执行结果图:
扩展资料:
实现功能的编程事项:
1、模块化思想。
先拆分需求,先拆分先考虑怎么确定一个数是不是素数,然后再复用到所有。不能把方法堆到一起,否则无法复用代码。
2、注意注释。
就算是自己的测试代码,尽量写清楚注释,这样即使过了三个月,再看代码,也能清晰明了。不要觉得简单,就懒得注释。
3、注意参数命名。
从类名到方法名,再到变量名,都不能随意取名,关于这个命名,不要嫌弃长,重点是意思清楚明白。见名知意(语义化),是最好的。
public class PramNum {public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 2; i <= 50; i++) {// 循环1 循环判断该数是否为质数 因为1不是质数所以从2开始循环
boolean flag = true;//判断是否为素数的变量
for (int m = 2; m <= (i - 1); m++) {// 循环2 因为1和本身肯定能被整除 所以从2开始至当前数-1循环
if (i % m == 0) {// 如果循环2循环到有数能被当前数整除 则跳出循环2 并且当前数不是质数 设置flag为false
flag = false;
break;
}
}
if (flag) {// 如果flag为真说明是素数
Systemoutprintln(i + "是素数");
}
}
}
}
代码如下,不过并不是传统的求素数的方法。
public class Test{public static void main(String[] args){
int[] c = new int[1000];
for(int i=0; i<1000; i++)
c[i]=0;//先将所有值初始化为0
for(int i=2; i<500; i++)
for(int j=2; ij<1000; j++)
c[ij]=1;//如果值发生改变说明不是素数
for(int i=100; i<1000; i++)
if(c[i]==0)
Systemoutprint(i+" ");
}
}
输出结果如下:
int sum=0;Systemoutprintln("1—100内的素数有:");
for(int i=1;i<=100;i++){
boolean flag=true;
for(int j=2;j<=i/2;j++){
if(i%j==0){
flag=false;
break;
}
}
if(flag){
Systemoutprint("\t"+i);
sum+=i;
}
}
Systemoutprint("他们的和是:"+sum);package logicjava;
import javautilScanner;
public class NumberJudge {
public static void main(String[] args) {
Scanner input=new Scanner(Systemin);
int count=0;//控制换行
int repeat=0;//判断的组数
repeat=inputnextInt();
//上限数组
int[] min=new int[repeat];
//下限数组
int[] max=new int[repeat];
//赋值
for(int i=0;i<repeat;i++){
min[i]=inputnextInt();
max[i]=inputnextInt();
}
//判断次数
for(int i=0;i<repeat;i++){
count=0;//清零
Systemoutprintln("primes:");
//每次的上下限
for(int j=min[i];j<=max[i];j++){
//是否为素数
boolean isOk=true;
if(j<2){
isOk=false;
}
for(int k=2;k<=j/2;k++){
if(j%k==0){
//不是素数
isOk=false;
break;
}
}
if(isOk){
Systemoutprint(j+" ");
count++;
}else{
continue;
}
if(count%6==0){
//每6个换行
Systemoutprintln();
}
}
Systemoutprintln();
}
}
}
没有判断输入的数是非负数。楼主有兴趣的话,自己判断一下。
这里是通过数组来实现的。其实用泛型会好些。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)