java 输出1-100素数

publicclassdata3{publicstaticvoidmain(String[]args){System.out.println("1-100内的素数为:\n... public class data3 {
public static void main(String[] args){
System.out.println("1-100内的素数为:\n");
int number1=1;
while (number1<=100){
int number3=0;
for(int number2=1;number2<=number1;number2++){
if (number2%number1==0)
number3++;

}
if((number3==1)||(number3==2));
{
System.out.println(number1);
}
number1++;
}
}

}
我编出来,为什么会1到100全部输出了?
展开
 我来答
百度网友66d722a
2011-06-24 · TA获得超过1166个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:230万
展开全部
你那个写的有点乱,代码可以写成下面这个样子,这个问题的关键就是怎样让代码的时间复杂度越低,即性能越好。素数的特征就是只能被1和他自己整除。我们可以以这个为出发点,控制循环条件,你可以看看我代码,不懂的还可以问,希望能够帮助你,谢谢
public static void main(String args[]) {
System.out.println("1-100内的素数为:\n");
int number = 1;
boolean isSuShu = true;
while(number<=100) {
for (int begin=1; begin<=number ; begin++) {
if (number%begin ==0 && begin != 1 && begin != number) {
isSuShu=false;//只要这个数能被1和他本身其他的数除尽的话,他就不是素数
break;
}
}
if (isSuShu) {
System.out.println("素数:" + number);
}
number++;
isSuShu = true;//每次循环完都要重新给这个标志位赋值
}

}
flyingFish211
2011-06-24 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
因为number2迟早为1,1 %任何数都为1,所以number++永远执行

按照你的方法,我修改你的
public class data3 {
public static void main(String[] args) {
int number1 = 1;
while (number1 <= 100) {
int number3 = 0;

for(int i = 2; i < Math.sqrt(number1); i++){
if(number1 % i == 0){
number3++;
break;
}
}

if (number3 == 0) {
System.out.println(number1);
}
number1++;
}
}

}
追问
没看懂,你可以帮我改一下吗?
谢谢。
追答
已经修改了,其实对于数字number1,你不用判断到number-1得,只用判断到它的平方根就可以了。这样速度快。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9578f16
2011-06-24 · 超过17用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:53.9万
展开全部
你程序是什么意思,if (number2%number1==0)你number2<=number1 取余只有一种情况(number2==number)等于0啊,你说结果是不是所有数都输出了呢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ronyzlc
2011-06-24
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
public class Test02 {
public static void main(String[] args){
System.out.println("1-100内的素数为:\n");
sushu();
}
static void sushu(){
int num=1;
while(num<=100)
{
int num2=0;
for (int i = 1; i <= 100; i++) {
if(num%i==0)
{
num2++;

}

}
if(num2==2)
{
System.out.println(num);
}

num++;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mozhi_xiaotong
2011-06-24
知道答主
回答量:40
采纳率:0%
帮助的人:0
展开全部
逻辑判断错误!
boolean[] flagother= new boolean[20000];
int p,w;
int n=2;
for(p=0;p<20000;p++){
flagother[p]=true;
}
for (int q=2;q<=Math.sqrt(p);q++){
if (flagother[q]) {
for(int j=q;q*j<20000;j++){
flagother[q*j] = false;
n = n+1;
System.out.print(q);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式