1.我在写这段代码是就遇到了这么一个问题,我认为:
if (i % j == 0) {
break;
}
只要满足这段代码就认为是素数,其实不是,素数的定义是只有1和它本身可以整除,而这段代码,是只要能够整除就认为是素数 ,显然是错误的。我们话要再判断一下i==k才行,只要这样才能保证i为素数。
正确思路:我们先拿到一个数(i)让它去除一个(2——i)的数,在执行过程中我们判断出
i%j==0我们就将j的值给k,让i和k做对比,如果i==k就判断i是素数,否则不是,不是则进行下一次循环。
/*
* Copyright (c) 2020, 2023, All rights reserved.
*
*/
package cn.scl;
/**
* <p>Project: JavaStudy - Score3</p>
* <p>Powered by scl On 2023-07-20 14:48:15</p>
* <p>描述:<p>
*
* @author scl [1846080280@qq.com]
* @version 1.0
* @since 17
*/
public class Score3 {
public static void main(String[] args) {
int sum = 0;
int k=0;
for (int i = 2; i <= 100; i++) {
for (int j = 2; j <= i; j++) {
if (i % j == 0) {
k=j;
break;
}
}
if (i == k) sum += i;
}
System.out.println(sum);
}
}