I n은 계승 수있는 경우 발견하기 위해 노력하고있어하지만 난 내 코드에 대한주기)에 대한 잘못된 생각에 계승 수있는 경우 :찾기 n은 자바
static boolean fatorial(int n){
for (int a = 2; a < n; a = a * (a+1)){
if (n/a == 1){
return true;
}
}
return false;
}
I n은 계승 수있는 경우 발견하기 위해 노력하고있어하지만 난 내 코드에 대한주기)에 대한 잘못된 생각에 계승 수있는 경우 :찾기 n은 자바
static boolean fatorial(int n){
for (int a = 2; a < n; a = a * (a+1)){
if (n/a == 1){
return true;
}
}
return false;
}
A = A *의 (a +1) 다음 = 2로부터 시작하는 다음 = 2 * 3 = 6 =이 같이 쓸 수
static boolean fatorial(int n){
long res = 1;
int i = 2;
while(res < n) {
res = res * i++;
}
return res == n; // if res == n that means n was a factorial (res is always a factorial)
}
6 * 7 = 42 ... : 빈 경우
for (int a = 2; n % a == 0; n /= a++) {}
return n == 1;
을 for loop body는 당신을 불편하게 만듭니다 :
int a = 2;
while (n % a == 0) {
n /= a;
a++;
}
return n == 1;
설명하려면, 값 2, 3, 4, 5가되는, a
으로 나눌
n
경우 ...n
이 처음에는 계계가 아니 었습니다.n
을 해당 숫자로 나눕니다 (이후 체크 (*)에서 다시 계산하지 않으므로), a
을 증가 시키십시오.마지막으로 n == 1
인 경우 루프를 일찍 깨지 않았으며 처음에는 계승이었습니다. 예컨대
(*)는, 600 = 2*3*4*5*5
는 계승 아니지만 때문에 2*3
의 6으로 나눌 수있다. 당신이 그것을 발견 한 후에 2와 3으로 나누면 실수로 다시 계산하지 않는다는 의미로 나눌 수 있습니다.
"계승 번호"란 무엇입니까? 피보나치? –
'a '의 값은 2, 6, 42가 될 것입니다 ... 당신이 원했던 것이 확실하지 않습니다. –
a = a * (a + 1)가 잘못되었습니다 – mehulmpt