呵呵,求质数首先要知道它在数学上的定义,即除了1和其本身之外,不被任何数整除.
既然知道这个定义了,你还怕什么,照它的定义来就得了..
首先找2到这个数之间的数能否把这个数整除,如果有,就不是质数,没有,则就是质数了.
有根据数学上质数有关的一些原理,其实只需要判断2到其平方根之间的数能否把这个数整除就行了..
则用JAVA只需要解决4个问题
1接受输入
2求平方根
3循环判断
4输出
下面是程序代码:
import java.util.Scanner;
class Prime
{
int num; // 接受存放输入的数字
void inputNum()
{
Scanner sr = new Scanner(System.in);
if(sr.hasNextInt())
num = sr.nextInt();
}
void calcAndOutput()
{
for(int i=2;i
int j;
int sqr = (int)Math.sqrt(i);
for(j=2;j<=sqr;j++)
if(i%j==0) break;
if(j>sqr)
{
System.out.print(i + " ");
}
}
System.out.println();
}
public static void main(String args[])
{
Prime p = new Prime();
p.inputNum();
p.calcAndOutput();
}
}
其实,建议去下个JDK帮助文档
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int n = input.nextInt();
//1和2都不是质数,故从3开始
for(int i = 3;i<=n;i++){
if(isPrime(i))
System.out.print(i + " ");
}
}
//判断n是否为质数
public static boolean isPrime(int n)
{
for(int i = 2; i < n ; i++){
if(n%i==0)
return false;
}
return true;
}
}
import java.util.Scanner;
public class A {
int num; // 接受存放输入的数字
void inputNum() {
Scanner sr = new Scanner(System.in);
num = sr.nextInt();
}
boolean isPrime(int x) {
for (int i = 2; i < x / 2; i++) {
if (x % i == 0)// 如果余数为0,就不是质数
return false;
}
return true;
}
void calcAndOutput() {
if (num > 2) {
System.out.print(2 + " ");
}
for (int i = 3; i <= num; i++) {
if(isPrime(i)){
System.out.print(i + " ");
}
}
}
public static void main(String args[]) {
A p = new A();
p.inputNum();
p.calcAndOutput();
}
}
错了..重写