java求2-1000的所有素数

 什么是素数:简单来说就是除了1和自身以为,别的数都不能整除。当然,不能比他本身大。

求:2-1000 (包括2,1000)之间的素数

输出格式:每八个数字为一行

代码如下:

public class PrimeNumber {

	public static void main(String[] args) {
		//声明需要用到的变量
		int i = 2;  // i 是起始变量
		boolean prime; // prime 用来判断是否存在否定素数的因子
		int amount=0;   //累加器,统计素数个数

		while(i<=1000) {
                        //这里先重置一下布尔值的默认值,以便后面判断是否存在否定因子
			prime = true;
                        //进入循环,判断是否存在否定因子
			for(int n = 1 ; n < i ; n++ ) {
                                //如果存在否定素数的因子,改变默认布尔值
				if(i%n == 0 && n!=1  )prime = false;
				
			}                       
			if(prime)amount++;  //素数累加器自增
			if(prime)System.out.print(i+"\t"); //判断是否是素数
			if(h%8 == 0)System.out.println(); //控制输出行
			i++;
		}
	}

}

还有一种方法是用C写的可以参考判断条件,代码如下:

#include <stdio.h>
void main()
{

    int n,i;  //声明变量
    scanf("%d",&n); //输入需要判断的数字
    //进入循环开始判断
    for(i=2;i<n;i++){

          //如果存在否定素数的因子就终止循环
          if(n%i==0) break;
     }
     //判断,如果在遇到他本身之前没有否定数字就说明是素数,相反就不是(肯定比本身小)
     if(i>=n){

            printf("n is prime"); 
     }
     else{

            printf("n is not prime");
     }
}

以上方法并不适用于数字比较大的问题中,如果需要使用到比较大的问题中需要先开方,减少判断的次数。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值