JAVA素数问题
关注:283 答案:3 mip版
解决时间 2021-02-01 04:54
提问者不再打扰你
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个求素数的
要求越简单越好 适合初学者的
最佳答案
二级知识专家棄療尐钕
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 ;
}
全部回答
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+"不是素数"); //质数(又称为素数)
______________________________________
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)
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
→点此我要举报以上信息!←
推荐资讯
大家都在看