java 打印1-100之间的素数<只能用一个for循环>

java 如何输出1到100间的质数~

参考代码如下:
package test;
public class Test {
public static void main(String[] args) {
int j;
for (int i = 2; i <= 100; i++) // 1不是素数,所以直接从2开始循环
{
j = 2;
while (i % j != 0)
j++; // 测试2至i的数字是否能被i整除,如不能就自加
if (j == i) // 当有被整除的数字时,判断它是不是自身
System.out.println(i); // 如果是就打印出数字
}
}
}

扩展资料:
质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

import java.util.Scanner;

public class Prime {
private int startNum = 0;

private int endNum = 0;

private Scanner scanner = null;

public Prime() {
scanner = new Scanner(System.in);
System.out.println("请输入求素数的区间[a-b]");
}

private void getNum() {
System.out.print("请输入a:");
startNum = scanner.nextInt();
System.out.print("请输入b:");
endNum = scanner.nextInt();
}

private void printPrime() {
System.out.println("输出" + startNum + "到" + endNum + "之间的素数:");
for (int i = startNum; i <= endNum; i++) {
int s = 0;
for (int j = 2; j < 9; j++) {
if (i % j != 0 || (i < 9 && i % 2 != 0)) {
s = i;
continue;
}
s = 0;
break;
}
if (s != 0)
System.out.print(s + "");
}
}

public static void main(String[] args) {
Prime prime = new Prime();
prime.getNum();
prime.printPrime();
}
}
///////////////////////////////////////////
可以输出任意范围的素数,刚才测试了没有问题

100以内素数只要不能被10以内的素数整除即可:
1000以内不能被100以内的素数整除即可
public static void main(String args[]) {
ArrayList list = new ArrayList();
for(int i = 0 ; i <= 100 ; i++){
if((i!=2)&&(i%2 == 0)) continue;
if((i!=3)&&(i%3 == 0)) continue;
if((i!=5)&&(i%5 == 0)) continue;
if((i!=7)&&(i%7 == 0)) continue;
System.out.println("素数为:"+i);
}
}
结果为:
素数为:1
素数为:2
素数为:3
素数为:5
素数为:7
素数为:11
素数为:13
素数为:17
素数为:19
素数为:23
素数为:29
素数为:31
素数为:37
素数为:41
素数为:43
素数为:47
素数为:53
素数为:59
素数为:61
素数为:67
素数为:71
素数为:73
素数为:79
素数为:83
素数为:89
素数为:97

输出1到100的素数

import java.util.*;
public class Test{
static void prime(int a){ //判断函数,从2开始判断到该数的一半。如果有能整除的,就不是素数,否则就是素数
int k=a/2; // 该数的一半
int i = 2; //从2开始
boolean isPrime = true;//素数标记
for(;i<=k;i++){//判断是否素数
if(a%i==0)
isPrime = false; //不是素数
}
if(isPrime) //输出
System.out.println(a + " is prime");

}
public static void main(String[] args){

for(int i=1;i<=100; ++i){
prime(i);
}
}
}

这个求素数牛,用一个循环求素数有什么意义吗?
这种题目关键不是要效率吗
基本思路就是找到根号n里面所有素数后,将这些素数的倍数都否定,因为一个素数的倍数不可能是素数
import java.util.BitSet;

public class Sieve {
public static void main(String[] args) {
int n = 2000000;
double start = System.currentTimeMillis();
BitSet b = new BitSet(n);
int i;
//将b集合的i位置都设置成true
for (i = 2; i <= n; i++)
b.set(i);
i = 2;
int k;
//找出根号n中所有素数,100个数只用找10个
while (i * i <= n)
{
if (b.get(i))//如果是素数
{
k = 2 * i;//计算该素数的倍数
while (k <= n)
{
b.clear(k);//否定该数,也就是设置成false
k += i;//继续计算倍数
}
}
i++;
}
//上面的搞完后,b集合里没有被否定的数全部都是素数

double end = System.currentTimeMillis();
System.out.println((end - start) / 1000 + "秒");
for (i = 0; i < b.size(); i++)
{
if (b.get(i))
System.out.println(i);
}
}
}

你用如下的代码测试一下 看看是否有想要的结果
public class findPrime{
public static boolean prime (int n){
for(int k=2;k<=Math.sqrt(n);k++)
{
if (n%k==0)
return false;
}
return true;
}

public static void main(String args[]){
for (int m=1;m<=100;m++){
if (prime(m))
System.out.print(m+",");
}
}
}

test
{
main(){
for(i=2;i<100;+=i)
{
if(new test().tf(i))system.out.print(" "=i);
}
}
boolean tf(int a)
{ int i=2;
while(i<a/2)
{
if(a%i==0) return false;
else ++i;continue;
}
return true;
}
}

相关兴趣推荐

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网