判断101-200之间有多少个素数,并输出所有素数。
编译通过,可以运行,但是得出的结果却有问题,结果里面包括像125,155这样的非素数.不知道问题出在哪儿..
编译运行环境netbean.完整代码如下:package sushu;
import java.lang.Math.*;class Mathe{
public boolean issushu(int x){
boolean flag = true;
double n;
n =Math.sqrt((double)x);
for(int i=2;i<=n;i++){
if(x%2 == 0)
flag = false;
break;
}
return flag; }
}public class Main {
public static void main(String[] args) {
int i;
Mathe mathe = new Mathe();
for(i=101;i<=200;i++){
if(mathe.issushu(i) == true)
System.out.println(i);
}
}}
编译通过,可以运行,但是得出的结果却有问题,结果里面包括像125,155这样的非素数.不知道问题出在哪儿..
编译运行环境netbean.完整代码如下:package sushu;
import java.lang.Math.*;class Mathe{
public boolean issushu(int x){
boolean flag = true;
double n;
n =Math.sqrt((double)x);
for(int i=2;i<=n;i++){
if(x%2 == 0)
flag = false;
break;
}
return flag; }
}public class Main {
public static void main(String[] args) {
int i;
Mathe mathe = new Mathe();
for(i=101;i<=200;i++){
if(mathe.issushu(i) == true)
System.out.println(i);
}
}}
double n;
n =Math.sqrt((double)x);
for(int i=2;i<=n;i++){
if(x%2 == 0)
flag = false;
break;
}我用我的思路改了一下,你参考一下啊
package sushu;
import java.lang.Math.*;
public class test {
public static void main(String[] args) {
int i;
Mathe mathe = new Mathe();
for(i=101;i<=200;i++){
if(mathe.issushu(i) == true){
System.out.println(i);
}
}
}}class Mathe{
public boolean issushu(int x){
boolean flag = true;
//double n;
//n =Math.sqrt((double)x);
for(int i=2;i<x;i++){
if(x%i == 0){
flag = false;
break;
}
}
return flag;
}
}
package sushu;
import java.lang.Math.*;
public class test {
public static void main(String[] args) {
int i;
Mathe mathe = new Mathe();
for(i=101;i<=200;i++){
if(mathe.issushu(i) == true){
System.out.println(i);
}
}
}}class Mathe{
public boolean issushu(int x){
boolean flag = true;
//删了 double n;
//删了 n =Math.sqrt((double)x);
for(int i=2;i<x;i++){ //改了这段循环
if(x%i == 0){
flag = false;
break;
}
}
return flag;
}
}
double n;
n =Math.sqrt((double)x);
for(int i=2;i<=n;i++){
if(x%2 == 0)
flag = false;
break;
}
return flag;红色的改成
if(x%i == 0){
flag = false;
break;
}
public class Mathe {
public static void main(String []args){
int count=0;
Sushu s=new Sushu();
for(int j=101;j<=200;j++){
boolean m=s.isprime(j);
if(m==true){
System.out.print(j+" ");
count++;
if(count==10){
System.out.println();
count=0;
}
}
}
}
}
class Sushu{
public boolean isprime(int i){
boolean flag=true;
int n=(int)Math.sqrt(i);
if(n<2)return false;
for(int k=2;k<n;k++){
if(i%k==0){
flag=false;
break;
}
}
return flag;
}
}
输出结果为:
101 103 107 109 113 121 127 131 137 139
143 149 151 157 163 167 169 173 179 181
191 193 197 199
而你的那个for循环只是不能被2整除的:所以按3楼的给你整理了一下:
package sushu;
import java.lang.Math.*;class Mathe{
public boolean issushu(int x){
boolean flag = true;
double n;
n =Math.sqrt((double)x);
if(x%i == 0){
flag = false;
break;
}
return flag; }
}public class Main {
public static void main(String[] args) {
int i;
Mathe mathe = new Mathe();
for(i=101;i<=200;i++){
if(mathe.issushu(i) == true)
System.out.println(i);
}
}}