
* 0-100:是:101个数字,不是100个
* 0与1,不是质数也不是合数:
* 以下代码写的有点冗余:只因为题目要求,布尔数组要参与运算!
* 其实一个循环就可以解决的事!
*/
public class Prime {
public static void main(String[] args) {
int arr[]=new int[101],count=0//元素数组!
boolean[] brr=new boolean[101]//标记数组!
for(int i=0i<arr.lengthi++) //循环复制!
arr[i]=i
f:for (int i = 0 i<arr.length i++) {//判断!
if(i<2)continue f//跳过,0,1
for(int tem=item--!=2)
if(i%tem==0)
continue f
brr[i]=true//标记
}
for (int i = 0 i < brr.length i++) {//查看!
if(brr[i]!=false) {
count++
System.out.print(arr[i]+" ")
}
}
System.out.println("\r\n0-100质数共:"+count+"个!")
}
}
Java程序:import java.util.Scanner
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in)
System.out.print("请输入一个整数:")
int number = scan.nextInt()
PrimeNumber pn = new PrimeNumber()
pn.setNumber(number)
pn.printAll()
}
}
class PrimeNumber {
protected int number
public void setNumber(int number) {
this.number = number
}
public int getNumber() {
return this.number
}
public boolean isPrimeNumber(int number) {
int k = (int)(Math.sqrt(number))
for(int i=2i<=ki++) {
if(number % i == 0) {
return false
}
}
return true
}
public void printAll() {
for(int i=2i<=numberi++) {
if(isPrimeNumber(i)) {
System.out.println(i)
}
}
}
}
运行测试:
请输入一个整数:100
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和自身以外的数整除,就叫做质数(1不是质数)
所以根据定义从2到10000,每个数除以2到其自身减1的数,如果能被整除(等于0)则不是质数,否则就是质数
完整的Java程序如下(每句都加了注释)
public class SuShuHe{
public static void main(String[] args){
int sum=0,j//定义整型变量j,整型变量sum用于存放质数和,并赋sum初值0
for(int i=2i<=10000i++){//for_i循环从2到10000
for(j=2j<ij++) //for_j循环从2到i-1
if(i%j==0)//判断i是否能被j整除(余数等于0)
break//如果能跳出for_j循环
if(i==j){ //如果没有跳出for_j循环,那么for_j循环执行完时,j等于i,那么i就是质数
sum=sum+i//把质数加到求质数和的变量sum中
}
}
System.out.println("10000以内所有质数之和为:"+sum)//输出10000以内所有质数和
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)