package 素数;
public class 素数 {
public static void main(String[]args){
int a,b,x;
for(a=101;a<=200;a++){
for(b=2;b<a;b++){
x=a%b;
x+=x;
if(b==(a-1)){
if(x==0){System.out.println(a);}
}
}
}
}
}
for循环里面这样写试试呢:
if(a%b == 0) break;//如果被整除了,那么跳过这次循环
else if(b ==(a-1)){System.out.println(a);}//如果没有被整除,再判断B
这样不对
@AIxor:
package ttt; public class Main { public static void main(String[] args) { int a, b, x; for (a = 101; a <= 200; a++) { for (b = 2; b < a; b++) { if(a % b == 0) break; else if(b == a -1){ System.out.print(a + " "); } } } } } ///101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
哪里不对了?这是根据你写的思路做的改动。
结果是:101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
你运行一下试试?
求100到200之间的素数?
是的
@AIxor:
private static boolean IsPrimeNum(int n) { if(n <= 1)return false; if(n == 2)return true; boolean isPrimeNum = true; for(int i=2;i<=Math.sqrt(n);i++) { if(n % i == 0) isPrimeNum = false; } return isPrimeNum; }
@jello chen: 能详细点吗?
@AIxor:
for(int i=101;i<=200;i++) { if(IsPrimeNum(i)) { System.out.println(i); } }
求101到200之间的素数的合
public static void main(String[] args)
{
int a,b,sum;
for(a=101;a<=200;a++)
{
for(b=2;b<=Math.sqrt(a);b++)
{
if(a%b==0)
break;
}
if(b>Math.sqrt(a))
sum=sum+a;
}
}
不,我只是求素数
@AIxor: 那就把sum去掉洛,再修改if(b>Math.sqrt(a))判断为真后的语句,打印出这个素数就好了
int a,b;
for(a=101;a<=200;a++) //101到200之间
{
for(b=2;b<=Math.sqrt(a);b++) //不用全部除 除到Math.sqrt(a)就可以了
{
if(a%b==0) //可以整除,不是素数,在循环结束前break
break;
}
if(b>Math.sqrt(a)) // 在上面的循环没有找到可以整除的数,所以是素数
System.out.print(a+" "); //打印出来
}
@BingQiang: Math.sqrt(a)什么意思!最大为a吗?
@AIxor: 谢谢你的给分,Math.sqrt(a)是根号a的值,也就是对a开方
@AIxor: 再解释一下为什么要对a开方,这里用到了素数的一些概念,在一般领域,对正整数n,如果用2到
public class SushuTest {
public static void main(String[] args) {
System.out.println("100到200内的素数是:");
for (int i = 101; i < 200; i++) {
boolean flag=true;
for (int j = 2; j < i-1; j++) {
if (i%j==0) {
flag=false;
}
}
if (flag) {
System.out.print(i+" ");
}
}
}
}
和我的差不多
@AIxor: 并不和你的一样啊 至少我的有正确结果呢!