素数问题 java_JAVA素数问题

JAVA素数问题

关注:283  答案:3  mip版

解决时间 2021-02-01 04:54

e6cb1a03ad541b3098697807b7bf1798.png

提问者不再打扰你

2021-01-31 11:15

public class PANDUANZHISHU

{

public static void main(String args[])

{

int i = 79;

int j = 2;

while(j

{

if(i%j==0)

{

break;

}

j++;

}

if(j>=i)

{

System.out.println(i+"是质数");

}

else

{

System.out.println(i+"是素数");

}

}

}

根据这个 用for语句 和 do...while 语句再编译2个求素数的

要求越简单越好 适合初学者的

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家棄療尐钕

2021-01-31 11:42

你这是判断素数的吗

public class Prime {

//判断是否为素数

public static boolean isPrime(int num) {

boolean isPrime = false;;

for(int i=2;i

if(num % i == 0) {

isPrime = false;

} else {

isPrime = true;

}

}

return isPrime;

}

public static void main(String[] args) {

//定义结果变量result

int result = 0;

//循环100内的整数,并判断是否素数

for(int i=0;i<=100;i++) {

if(isPrime(i)) {

result += i;

}

}

System.out.println("结果为:" + result);

}

}

-------------------------------------------------------

public static void main(String[] args) {

int sum = 0;

for (int i = 1; i <= 100;i++) {

if (isPrime(i)) {

sum += i ;

}

}

System.out.println(sum);

}

public static boolean isPrime(int input) {

for (int i = 2; i < input;i++) {

if (input % i == 0 ) {

return false ;

}

}

return true ;

}

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼此生不换的執著

2021-01-31 13:04

for(j=2;j<=i/2;j++)

{

if(i%j==0)

{

break;

}

}

if(j>=i)

{

System.out.println(i+"是质数");

}

else

{

System.out.println(i+"不是素数"); //质数(又称为素数)

______________________________________

e6cb1a03ad541b3098697807b7bf1798.png

2楼瑾色如弦

2021-01-31 12:56

主要是你没看懂这个算法的思想,所以才有这个疑问。

其实很简单,就是对于某个数字j进行暴力除法,从2开始除,直到除 j/2。如果除了这么多次的余数都不为0,说明是质数(为什么除到j/2呢?因为你想,j=2* j/2,比j/2大的数字肯定不可能是j的约数了)

关于为什么要有

if(i>j/2){

system.out.println(+j+"是素数");

}

其实也很简单。如果是j%i==0 的时候,break跳出最里面的for循环,此时需要i>j/2来排除这种情况。比如j=6的时候,i=2时候跳出最里面的循环,进而通过if(i>j/2) 的条件排除j=6为质数。(因为i<=j/2意味着 j 没有被所有可能的约数除过就跳出循环了,也就是说有某个i<=j/2是 j的约数,进而 if(j%i == 0)结果为真跳出循环,但显然此时j不是质数,因为有某个不为1和自己的约数i)

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值