java输出素数

java输出素数,第1张

// 你忘了把temp = 0
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();
}

}

}
没有判断输入的数是非负数。楼主有兴趣的话,自己判断一下。
这里是通过数组来实现的。其实用泛型会好些。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存