public class Javaxunhuan
{//题目要求:对于1~100的数,求前五个质数。
public static void main(String[] args)
{
int number =0 ;
boolean flag = true ;
for (int a = 1 ; a<=100 && flag ; a+=2 )
{
for (int b=2;b<a ;b++ )
{
if ((a%b)!=0 )
{
System.out.println(a);
number++ ;
if (number==5)
{
flag = false;
}
}
}
}
}
}请问,我这串代码的问题在哪里?
题目:求1-100内的前5个质数。
我这串代码输出的前5个值,第一个值居然是1,输出不出来质数3。
哪位高人能说明一下,谢谢了。
{//题目要求:对于1~100的数,求前五个质数。
public static void main(String[] args)
{
int number =0 ;
boolean flag = true ;
for (int a = 1 ; a<=100 && flag ; a+=2 )
{
for (int b=2;b<a ;b++ )
{
if ((a%b)!=0 )
{
System.out.println(a);
number++ ;
if (number==5)
{
flag = false;
}
}
}
}
}
}请问,我这串代码的问题在哪里?
题目:求1-100内的前5个质数。
我这串代码输出的前5个值,第一个值居然是1,输出不出来质数3。
哪位高人能说明一下,谢谢了。
改成
for (int a = 3 ; a<=100 && flag ; a+=2 )输出结果时,还要把2加上去,因为2是质数。
1即不是质数,也不是和数。
// 题目要求:对于1~100的数,求前五个质数。
public static void main(String[] args) {
int number =0 ;
boolean flag = true ;
for (int a = 1 ; a<=100 && flag ; a+=2 ) {
for (int b=2;b<=a/2 ;b++ ) {
/*if ((a%b)!=0 ) {
System.out.println(a);
number++ ;
if (number==5) {
flag = false;
}
}*/
if(a % b == 0) {
flag = false;
break;
}
}
if(flag) {
System.out.println(a);
number ++;
if(number == 5) {
flag = false;
}
} else {
flag = true;
}
}
}
}
按照你的思路改了下,你可以看看代码!
这里还是没有改成
for (int a = 3 ; a<=100 && flag ; a+=2 ) {
输出还是有问题,必须得把2、3楼的综合起来,结果才有点对。现在还有一个问题,
代码中的第一个for对a进行了循环,这个循环里面的内容不允许修改
,那么我想请问,如何定义才能使"2"这个值出现在我所求的质数范围之内?跪求高手赐教!!!
第一个for不改的话,你这个问题相当于,如何在奇数中找到2
不可能,2只能特殊处理。 if(flag) {
if(a==1)
System.out.println(2);
else
System.out.println(a);
number ++;
if(number == 5) {
flag = false;
}
} else {
flag = true;
}
有且只有1和自己两个因数for(int i=1;i<101;i++){
if (isPrime(i)){
system.out.println(i);
}
}boolean isPrime(int x){
int factorNum = 0;
for(int i=1;i<=x;i++){
factorNum += (x % i)==0?1:0;
}
return factorNum==2;
}这个效率不高,只是表明怎么根据定义来判断是否质数,1,2,3都不例外。
如果想要效率高,质数的算法有很多,我就不班门弄斧了
这个正则表达式表示什么意思 我对正则没怎么了解过
这个不是正则表达式,等同以下:boolean isFactor = (x%i) == 0;
if (isFactor){
factorNum = factorNum + 1;
}else{
factorNum = factorNum + 0;
}