정수 좌표가 0보다 작고 (0,0), (0, N), ,엔).프로젝트 오일러 233
그것은 그 F (10000) = 36
모든 양의 정수 N 1,011되도록 F (N) = 420의 합이 무엇을 표시 할 수 있는가?
좋아, 그래서 내가 여기 프로젝트 오일러 번호 (233)에 대한 기본적인 생각을 가지고 있다고 생각 내 코드입니다 :
/*
* Andrew Koroluk
*/
public class euler233 {
public static void main(String[] args) {
System.out.println(f(10000));
System.out.println(f(1328125));
System.out.println(f(84246500));
System.out.println(f(248431625));
//if(true) return;
double ans = 0;
for(double N=10000; N<=(Math.pow(10, 11)); N++) {
//System.out.println(N);
if(f(N)==420) {
ans+= N;
System.out.println(N);
}
}
System.out.println(ans);
}
static double f(double N) {
double ans = 0;
double r = Math.sqrt(2*N*N)/2;
//System.out.println(r*r);
double r2 = r*r;
for(int x=1; x<=r; x++) {
for(int y=1; y<=r; y++) {
if(x*x + y*y == r2) {
ans+=4;
break;
}
}
}
return ans;
}
static boolean isInt(double a) {
if(a==(int)a) return true;
return false;
}
}
기본적으로 내가 무엇을 원 안에 새겨 직각 삼각형에 대한 솔루션을 찾는 중이 야 , 원주 길이의 빗변을 갖는다. 내 코드가 맞다는 것이 확실하지 않습니다.
그것은 올바른 다음 내 문제는 F를 최적화한다 (N) 함수 F에 대한 번호를 찾기 위해 루프를 최적화 (N) = (420)는
새로운 코드의 경우 :
public class euler233 {
static long[] primes;
public static void main(String[] args) {
System.out.println(r(1328125));
Clock c = new Clock();
System.out.println(f2(10000));
c.getTimeSeconds();
c.reset();
System.out.println(f2(1328125));
c.getTimeSeconds();
}
static long f2(long N) {
return SquaresR2(N*N);
}
static boolean isInt(long a) {
if(a==(int)a) return true;
return false;
}
static int SquaresR2(long n) {
//System.out.println("start");
int sum = 0;
outer:
for(int a=0; a<Math.sqrt(n)-1; a++) {
for(int b=0; b<Math.sqrt(n)-1; b++) {
if(a*a + b*b == n) {
if(a>b) break outer;
sum+=4;
System.out.println(n+" = "+a+"^2 + "+b+"^2");
}
}
}
sum*=2;
if(Math.sqrt(n)==(int)Math.sqrt(n)) sum+=4;
return sum;
}
static int r(int n) {
return 4*(d1(n) - d3(n));
}
private static int d1(int n) {
int k=1, sum=0;
while(true) {
int d = 4*k+1;
if(d>n) break;
if(n%d==0) sum++;
k++;
}
return sum;
}
private static int d3(int n) {
int k=1, sum=0;
while(true) {
int d = 4*k+3;
if(d>n) break;
if(n%d==0) sum++;
k++;
}
return sum;
}
}
여기서 질문은 무엇입니까? –
1. 내 접근법이 맞습니까? 2. 신속하게 실행되도록 코드를 최적화하려면 어떻게해야합니까? –
당신은 왜 그것을 보지 않으려는 사람들에게 호의로서 문제를 정의하지 않습니까? –