本文主要是介绍zzuli oj 1057: 素数判定(java),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
输入一个正整数n,判断n是否是素数,若n是素数,输出”Yes”,否则输出”No”。 注意:1不是素数。
输入
输入一个正整数n(n<=1000)
输出
如果n是素数输出"Yes",否则输出"No"。输出占一行。
样例输入
2
样例输出
Yes
先调到java再提交
import java.util.*;
public class Main{public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();String str = "Yes";if(n != 1){for(int i = 2;i <= Math.sqrt(n);i++)if(n % i == 0)str = "No";}elsestr = "No";System.out.print(str);}
}
至于为何判断素数时只需要遍历2~sqrt(n):
采用遍历的核心思想是看2~n中有无能被n整除的数,如果没有则n是素数,反之是合数.
而合数必然可以写为两个整数之积,其中一个小于sqrt(n),记为a,另一个大于sqrt(n),记为b,于是有:
因此如果n是合数,2~sqrt(n)之间必然存在它的因子,当出现能被n整除的数时,就可以断言这必然是合数.
这篇关于zzuli oj 1057: 素数判定(java)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!