sorry, chưa đọc kỹ đề
chạy chương trình gen dãy bằng mồm thì ta có cái đống này:
1 2 3 5 8 13 21 34....
2 với k = 2 chẵn
8 với k = 5 chẵn
34 với k = 8 chẵn
=> nhận xét: nk là chẵn khi k = 2 + 3u với u thuộc N
xong
sorry, chưa đọc kỹ đề
chạy chương trình gen dãy bằng mồm thì ta có cái đống này:
1 2 3 5 8 13 21 34....
2 với k = 2 chẵn
8 với k = 5 chẵn
34 với k = 8 chẵn
=> nhận xét: nk là chẵn khi k = 2 + 3u với u thuộc N
xong
34 thì = 2 + 3* mấy vậy @-)
func chanle(n)
sole=.f. // cho số-lẻ một tri giá false đầu tiên
for i=1 to n // (n là bất kỳ số nguyên nào muốn test)
sole=.not. sole // swap trị số logic của số-lẻ, nếu nó đang true thì thành false hay ngược lại.
next
if sole=.t.
ketqua="số lẻ"
else
ketqua="số chẳn"
endif
return ketqua
Nếu n là một số nguyên nhỏ thì OK còn nếu nó là một số lớn thì mất thì giờ.
Đây chỉ là một ví dụ khi không cho phép sử dụng cộng, trừ, nhân, chia hay bất cứ function nào khác.
Nếu cho dủng các func khác thì dùng x=val(right(str(n),1)) và test x
Ví dụ:
n=459287474561295
x=val(right(str(n),1))
Thì x = con số cuối là 5 và test chỉ con số 5 mà thôi.
Được sửa bởi The Old Man lúc 00:24 ngày 17-03-2009
Bạn troidat1234, 34 là giá trị, còn 2 + 3* bao nhiêu thì là chỉ số k cơ mà =)).
Thế này cho dễ hiểu vậy
n[2] = 2;
n[5] = 8;
n[8] = 34;
=> n[2 + 3*u] = số chẵn
không dùng chia hết cho 2, ngắn gọn súc tích.
Code:var n:longint; begin readln(n); if odd(n) then writeln(n,' là lẻ') else writeln(n,' là chẵn'); readln; end.
Bookmarks