자바 8 에 서 는 흐름 구분 소수 와 비 질 수 를 사용 하여 상세 하 게 설명 합 니 다.
public class PrimeTest {
public static void main(String[] args) {
Map<Boolean, List<Integer>> collect = IntStream.rangeClosed(2, 100).boxed().collect(partitioningBy(PrimeTest::isPrime));
System.out.println(collect.get(true));
System.out.println(collect.get(false));
}
private static boolean isPrime(int endNum) {
//
int sqrt = (int)Math.sqrt(endNum);
// true
return IntStream.rangeClosed(2, sqrt).noneMatch(e -> endNum % e == 0);
}
}
보충 지식:자바 는 1-100 이내 의 모든 소 수 를 구하 고 하나의 수가 소수 인지 아 닌 지 를 판단 한다.자바 코드 구현 테스트 결과 도소수(prime number)는 소수 라 고도 부 르 며 무한 개가 있다.
질 수 는 1 보다 큰 자연수 에서 1 과 그 자 체 를 제외 하고 다른 인수 가 없 는 수 를 양수 라 고 정의 한다.
어린 사제 가 저 에 게 이런 연락 문 제 를 물 었 습 니 다.간단 해 보이 지만 모두 가 간단 하 다 고 생각 하 는 것 을 나 눌 필요 가 없다 면 초보 자 는 고 통 스 럽 지 않 습 니까?
그래서 제 가 사제 님 께 시범 을 보 여 드 렸 습 니 다.초보 자 를 편리 하 게 하고 코드 를 어떻게 쓰 는 지 보 세 요.
코드 내부 의 세부 사항(작업 을 시작 하지 않 았 거나 방금 일 한 형 들 을 대상 으로 합 니 다):
1.모듈 화 사상.
먼저 수 요 를 나 누 어 1-100 이내 의 소 수 를 구 하 라 고 했 는데 올 라 와 서 할 수 없 으 니 먼저 한 수의 소수 가 소수 인지 아 닌 지 를 어떻게 확정 하 는 지 를 고려 한 다음 에 모든 것 으로 재 활용 하 세 요.
방법 을 한데 쌓 을 수 없다.그렇지 않 으 면 코드 를 어떻게 재 활용 할 것 인가?
2.주석 에 주의 하 세 요.
자신의 테스트 코드 라 도 어쨌든 주석 을 써 라.그러면 3 개 월 이 지나 도 코드 를 보면 1 분 이면 알 수 있다.간단 하 다 고 해서 주석 을 달 기 를 귀 찮 게 하지 마라.
매개 변수의 주석 이 생략 되 더 라 도 이 방법의 역할 은 설명해 야 한다.
들 어 본 것 같은 데:
잘 쓴 코드,3 개 월 후에 돌 이 켜 보면 알 아 볼 수 있 습 니 다.그리고 자신 이 쓴 것 이 아니 라 는 것 도 알 고 있 습 니 다.와,이것 은 제 가 쓴 코드 입 니까?!!!
3.매개 변수 이름 에 주의 하 십시오.
유형 명 부터 방법 명,변수 명 까지 마음대로 이름 을 지 을 수 없습니다.a,b,c,d 라 고 부 르 는 것 은 너무 자 유 롭 습 니 다.선생님 께 서 수업 을 이렇게 하 시 면 편리 하도록 키 보드 를 몇 번 덜 두 드 리 겠 습 니 다.
하지만 초보 자 들 은 가장 기본 적 인 부분 부터 시작 하 세 요.그러면 프로젝트 에 나 오 면 이 빨 이 빠 지 는 이름 을 짓 지 않 을 겁 니 다.
이 이름 에 대해 서 는 그 가 길다 고 싫어 하지 마라.중요 한 것 은 뜻 이 분명 하 다 는 것 이다.명성 을 보고 뜻 을 알다.가장 좋다.
4.코드 포맷.
일부 신인 들 은 선생님 과 몇 년 동안 일 한 종사자 들 을 포함 하여 이 포맷 코드 에 습관 이 없 을 것 이다.
네가 습관 이 되 기만 한다 면 이것 은 다른 사람 이 말 하지 않 아 도 된다.네가 다 쓰 면 format 할 것 이다.그리고 이렇게 하면 당신 의 코드 도 깨끗 해 보 입 니 다.
보기 만 해도 시원 하 다.
다음은 코드 를 보 겠 습 니 다.
package com.lxk.test;
import java.util.ArrayList;
import java.util.List;
/**
* 1-100
* <p>
* Created by lxk on 2017/3/2
*/
public class PrimeNumberTest {
public static void main(String[] args) {
int n = 100;
System.out.println(getPrimeNumberToN(n));
}
/**
* 1 n , ArrayList
*/
private static List<Integer> getPrimeNumberToN(int n) {
List<Integer> result = new ArrayList<>();
for (int i = 1; i < n + 1; i++) {
if (numberIsPrime(i)) {
result.add(i);
}
}
return result;
}
/**
* : 1
* <p>
* : 2 , n, < n , ,
*/
private static boolean numberIsPrime(int n) {
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
실행 결과 그림:작은 문제 하나 에 가슴 을 적 시 는 내 가 이렇게 많은 것 을 정리 하 는 것 은 너무 시 끄 러 운 것 이 아 닙 니까?
당연 하지,이것 은 모두 작은 건의 들 이 야.
반 보 를 쌓 지 않 으 면 천리 까지 갈 수 없다.백 층 의 높 은 대 는 흙 을 쌓 는 데 서 시작 되 잖 아.이 이 치 는 모두 간단 하지만 실현 은 쉽 지 않다.
이상 의 이 편 은 자바 8 에서 흐름 을 이용 하여 질 수 와 비 질 수 를 구분 하 는 상세 한 설명 은 바로 소 편 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 여러분 들 이 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Liquibase】DB 작성·테이블 정의 변경신규 스타터 프로젝트 작성 Liquibase와 MySQL 선택 application.properties에 DB 정보 넣기 MySQL에서 "testdatabase"라는 데이터베이스 만들기 빌드 종속성 추가 build....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.