关于素数问题。发代码求解释。。。
import java.util.Scanner;
public class qiusushu{
public static void main(String[] args){
int i, y, j;
Scanner num = new Scanner(System.in);
System.out.println("请输入一个数:");
y = num.nextInt();
j = (int) y / 2;
for (i = 2; i <= j; i++)
{
if (y % i == 0)
{
System.out.println("此数不为素数");
break;
}
}
if (i > j)
{
System.out.println("此数为素数");
}
}
}
假如我输入的是7.那么j = (int) y / 2; 这里的 j应该等于多少? 7/2=3.5 。。。不知道int的作用;
假如输入7,那么7就会跳出 for 循环是吗? 然后到下面的if这里,i>j ,i不是2到 7/2 之间吗? 那 i 怎么能 > j 呢?
晕了。。我自己都说乱了。。。。朋友们帮忙解释下这些代码。。。说通俗点。。。我新手。。感激。
对了。关键问题还是 最后一个 if 语句噢。 请尽量清楚的给这些代码标注释。。。谢谢。。。
[解决办法]
j = (int) y / 2;
//计算素数只需要计算到它自身的开平方就可以的,这样为了方便取其一半的值
//做循环,看看从2开始,有没有数能被y整除
for (i = 2; i <= j; i++)
{
//如果有这样的数,能被y整除。那么y就不是素数,输出结果,退出循环
if (y % i == 0)
{
System.out.println("此数不为素数");
break;
}
}
//如果循环完毕都没有整除的,这个时候i就会大于j(这是上面循环完毕退出的条件)
//那么这个数就是素数了
//或者说这个数是小于4的 那么肯定是素数了。
if (i > j)
{
System.out.println("此数为素数");
}
}
不知道LZ能不能明白,感觉说的不是很好
[解决办法]
素数:仅能被1和自身整除的整数就是素数。
因此,判断一个数n是不是素数,只需要判断从2~(n/2)有没有数能被n整除。
for循环里面第一个if判断是否能整除,如果不能,会进入下一个循环,直到i>j,此时表明所有要判断的数都判断完了,没有找到能整除的,所以y是素数;如果找到某一个数能整除,那么说明y不是素数,break跳出循环。