文章目录
- 一、素数是什么?
- 二、思考步骤
- 1.满足定义:拿一个数看能不能被1和它本身整除,对吗??
- 2.先说说1-100以内的素数如何输出:
- **那么怎么变成判断输入的一个数是不是素数呢??**
- 总结
在判断一个数是否为素数的题上,花费了我大量的时间,所以我不得不拿来说一说
一、素数是什么?
素数就是在所有比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做素数(质数)
二、思考步骤
1.满足定义:拿一个数看能不能被1和它本身整除,对吗??
那肯定是不对的,那不是随便一个数都是素数了
应该考虑从2开始到输入的数减一为止,都不能被你输入的数整除,才定义为素数**
2.先说说1-100以内的素数如何输出:
首先我们需要一个循环,遍历一下1-100的全部整数,可以用for()循环
要明白的是最小的质数是:2 肯定有很多人不知道吧
那么这个for从i=2开始
在考虑内层循环,必须让外层循环的每一个数进入内层循环去除2到它自身-1的所有数看结果为不为零来判断,话不多说上码
public class HomeWork {
public static void main(String[] args) {
int j;
for (int i = 2; i <= 100; i++) { //遍历1-100的整数
for (j = 2; j <= i - 1; j++) { //j:被i去除
if (i % j == 0) { //如果能被2-到i-1中的任何一个数整除就说明不是素数
break; //不用break 每一个都会输出是素数
}
}
if (i == j) {
System.out.println(i + "是素数");
}
}
}
}
那么怎么变成判断输入的一个数是不是素数呢??
那既然是输入的肯定要new 一个Scanner,然后我们不需要外面那个遍历1-100的循环了,把它去掉,里面的只需要让i小于你输入的数-1,在循环就可以啦
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int i;
for (i = 2; i < n; i++) {
if (n % i == 0) {
System.out.println(n + "不是素数");
break;
}
}
if (n==i){
System.out.println(n+"是素数");
}
}
}
总结
对于写每一个编程题来说,最重要的是先要自己理解题目,逻辑清楚,就像这个素数,自己要知道素数是怎么定义的,根据定义来写代码,层层递进,当然这个方法不是最优方案,最优方案下次再说给你们吧!