找素数(java)
emm对蓝桥云课真是无语,尼玛的运行都不运行就拿出来讲,然后判断不出素数,真的误人子弟呀,
能教出来这种代码,我更傻叉,还信了他的鬼话
/**
* @author zb
* date2025/3/20 19:08
*/
public class Main {
public static void main(String[] args) {
int cnt = 0 ;
for (int i = 1; i <=100000000 ; i++) {
cnt = cnt+ check(i);
if(cnt==100002){
System.out.println(i);
break;
}
}
}
// 判断哪个数字是素数
// 是素数返回1
// 不是素数返回0
static int check(int n){
// 23都是素数
if(n==1){
return 0;
}else if(n==2||n==3){
return 1;
}
// 能整除 2 和 3 的都不是素数
else if (n%2==0||n%3==0) {
return 0 ;
}
// 由于约数是成对出现的 假设a *b = n
// 一定满足 a<=根号n b>=根号n
for (int i = 5; i * i <= n ; i=i+6) {
if(n%i==0){
return 0;
}
}
return 1;
}
}
真恶心
问了一下deepseek,deepseek说我漏了7,7也是素数
正确代码
/**
* @author zb
* date2025/3/20 19:08
*/
public class Main {
public static void main(String[] args) {
int cnt = 0 ;
for (int i = 1; i <=100000000 ; i++) {
cnt = cnt+ check(i);
if(cnt==100002){
System.out.println(i);
break;
}
}
}
// 判断哪个数字是素数
// 是素数返回1
// 不是素数返回0
static int check(int n){
// 23都是素数
if(n==1){
return 0;
}else if(n==2||n==3){
return 1;
}
// 能整除 2 和 3 的都不是素数
else if (n%2==0||n%3==0) {
return 0 ;
}
// 由于约数是成对出现的 假设a *b = n
// 一定满足 a<=根号n b>=根号n
for (int i = 5; i * i <= n ; i=i+2) {
if(n%i==0){
return 0;
}
}
return 1;
}
}