2016-11-20 12 views
-2

I've이 문제로 실행 : X = A를 + U 내가 ; Y = B + V J 알려진(아마 사용주기) 나는이 두 equtions 함께 일하고 C. 내 학교 프로젝트에서 작업하는 동안

는 B, U, V, a의 값이다. 동등한 번호가 x = y이 될 때까지 u, v에 자연 숫자 (i, j)을 곱해야합니다.

(참고 : i와 j는 동일한 값을 가질 수 없거나 x = y 인 경우 다른 숫자 일 수 있음). 여기

그리고

내가 가능한 솔루션 사이클, 또는 diofantic 식 (I 위의 방정식에 적용하는 방법을 잘 모릅니다입니다한다고 가정, i와 j 를 다른 상태 방정식을 해결하는 방법을 잘 모릅니다, 문제가 온다 .) 초보자이며 붙어 있습니다. 누군가가 C 코드의 해결책을 알려줄 수 있습니까? 고맙습니다.

편집 난 그냥주기에 의해 방정식을 해결하려면, 나는 내가 무엇을해야하는지 알고 있다고 생각하지만, 난 그냥 C에서 그것을 작성하는 방법을 잘 모릅니다 ..

1) 모든 사이클의 단계 I은 X, X가 Y 후 낮은 경우, j는 1

3만큼 증가하지 않으면, i가 1만큼 증가된다

2))의 반복을 Y 계수 X = Y

까지

4) 때로는 해결책이 전혀 없기 때문에 거기에 조건을 두어 영원히 돌아 가지 않아야합니다.

+6

기본 대수학에 관한 것이지 프로그래밍에 관한 것이 아니기 때문에이 질문을 주제로 끝내기로하겠습니다. –

+0

지금까지 현재의 C 솔루션 게시하기 –

+0

이것은 C로 작성한 프로젝트의 계산 과정에 불과하므로 해결할 수 없습니다.나는 전체 문제로 당신을 짐을 싶지 않아. 그러나 복잡한 문제 (내 프로젝트)를 설명하는 것이 편리 할 수 ​​있습니다. 나는 여기에 더 넓은 설명을 최대한 빨리 올릴거야. –

답변

0

당신의 방정식을 다시 쓰기, 당신은 얻을 :

a + u i = b + v j 

i = (b + v j - a)/u 

지금 당신이 i은 자연이되도록 자연수 j을 발견하는 데 필요한 솔루션. 분명히 b + v j - au의 양수 배수 여야합니다. 그래서 :

b + v j - a = k * u, k \in N 
j = (k * u + a - b)/v 

지금 k * u + a - bv의 배수 여야합니다. 항상 가능한 것은 아닙니다. 가장 쉬운 방법은 처음 몇 가지 가능한 k을 반복하고 그것이 어디서 나오는 지 확인하는 것입니다. 자연수를 얻는다면 j 솔루션을 위의 방정식에 꽂을 수 있으며 자연스러운 값을 얻을 수 있습니다. i.

여기서는 x, y, a, b, u 및 v가 실수 인 것으로 가정합니다. 그것들이 정수형이라면, 그것보다 조금 더 멀어 질 수도 있습니다.

+0

답변 주셔서 대단히 감사합니다. 이것은 매우 유용합니다. 내 코드에 성명서를 넣으려고합니다. –

+0

내가 컴파일 할 때 ** k ** 선언되지 않고이 함수에서 처음 사용되었습니다. 나는 당신이 그것을 어디에서 가져 왔는지, 또는 k가 무엇인지를 결정할 수 없습니다. –

+0

내가 말했듯이. 그것은 자연수입니다. 그리고 가장 쉬운 방법은 'k'를'1'에서 어떤 상한으로 반복하는 것입니다. –