2011-11-03 40 views
62

Tôi cần kiểm tra xem mỗi số từ 1 đến 1000 có phải là bội số của bội số hay bội số của 5 hay không. Cách tôi nghĩ tôi sẽ làm là chia số cho 3 và nếu kết quả là số nguyên thì nó sẽ là bội số của 3. Cùng với 5.Làm thế nào để bạn kiểm tra xem một số có thể chia hết cho một số khác (Python) không?

Làm cách nào để kiểm tra xem số có phải là số nguyên không?

đây là mã hiện tại của tôi:

n = 0 
s = 0 

while (n < 1001): 
    x = n/3 
    if isinstance(x, (int, long)): 
     print 'Multiple of 3!' 
     s = s + n 
    if False: 
     y = n/5 
     if isinstance(y, (int, long)): 
      s = s + n 

    print 'Number: ' 
    print n 
    print 'Sum:' 
    print s 
    n = n + 1 
+1

Trong Python 2.x, phân chia số nguyên luôn mang lại số nguyên. –

+9

Bạn nên in "Fizz" và "Buzz" – wim

+7

Bài toán Euler dự án 1? –

Trả lời

147

Bạn làm điều này bằng cách sử dụng toán tử mô đun, %

n % k == 0 

đánh giá đúng nếu và chỉ nếu n là bội chính xác của k. Trong môn toán tiểu học, điều này được gọi là phần còn lại từ một bộ phận.

Trong phương pháp hiện tại của bạn, bạn thực hiện một phân chia và kết quả sẽ là một trong hai

  • luôn một số nguyên nếu bạn sử dụng phân chia số nguyên, hoặc
  • luôn luôn là một phao nếu bạn sử dụng nổi phân chia điểm.

Đó là cách sai lầm để thử nghiệm tính chia rẽ.

+1

@Taimur đã trả lời cập nhật –

+0

Mẹo tuyệt vời! Cảm ơn – sidonaldson

+0

'không (n% k)' sẽ là một thay thế ít có thể đọc được –

-4

Cách đơn giản nhất là kiểm tra xem một số có phải là số nguyên là int(x) == x hay không. Nếu không, những gì David Heffernan nói.

-2

Đối với số điện thoại nhỏ n%3 == 0 sẽ không sao. Đối với số lượng rất lớn Tôi đề nghị để tính toán tổng chéo đầu tiên và sau đó kiểm tra nếu tổng chéo là bội số của 3:

def is_divisible_by_3(number): 
    if sum(map(int, str(number))) % 3 != 0: 
     my_bool = False 
    return my_bool 
+1

Có tính toán số thập phân và sử dụng phép toán mô đun thực sự nhanh hơn trực tiếp bằng cách sử dụng phép toán mô đun không? Nếu vậy, bạn có nên gọi hàm của bạn đệ quy cho đến khi số đó đủ nhỏ không? – honk

0

Bạn có thể sử dụng % nhà điều hành để kiểm tra divisiblity của một số dựa

Mã để kiểm tra xem có được không. được chia cho 3 hoặc 5 khi không có. ít hơn 1000 được đưa ra dưới đây:

n=0 
while n<1000: 
    if n%3==0 or n%5==0: 
     print n,'is multiple of 3 or 5' 
    n=n+1 
1

Bạn chỉ có thể sử dụng % hành Modulus để kiểm tra hệ chia hết.
Ví dụ: n % 2 == 0 nghĩa n chia hết cho 2 và n % 2 != 0 nghĩa n không chia hết cho 2.

Bạn cũng có thể có một cái nhìn vào operators sử dụng trong lập trình.

-3

Hãy thử này ...

public class Solution { 

    public static void main(String[] args) { 
    long t = 1000; 
    long sum = 0; 

    for(int i = 1; i<t; i++){ 
      if(i%3 == 0 || i%5 == 0){ 
       sum = sum + i; 
      } 
     } 
     System.out.println(sum);  
    } 
} 
+0

Điều này dành cho những người muốn viết mã java –

0

Mã này xuất hiện để làm những gì bạn đang yêu cầu.

for value in range(1,1000): 
    if value % 3 == 0 or value % 5 == 0: 
     print(value) 

Hoặc một cái gì đó giống như

for value in range(1,1000): 
    if value % 3 == 0 or value % 5 == 0: 
     some_list.append(value) 

Hoặc bất kỳ số lượng của sự vật.

+0

để trả lời câu hỏi của bạn: chọn và ctrl + K indents. Tôi đã làm điều đó cho bạn trong thời gian này. –

-4

jinja2 mẫu fizzbuz:

<form> 
    <ol> 
    {% for x in range(1,n+1) %} 
     {% set fizzbuzz_rpm = x %} 
     {% if x % 3 == 0 and x % 5 == 0 %} 
     {% set fizzbuzz_rpm="FizzBuzz" %} 
     {% elif x % 3 == 0 %} 
      {% set fizzbuzz_rpm="Fizz" %} 
     {% elif x %5 == 0 %} 
      {% set fizzbuzz_rpm="Buzz" %} 
     {% endif %} 
     <li>{{fizzbuzz_rpm}}</li> 
    {% endfor %} 
    </ol> 
</form> 
+3

Một giải pháp trong Python đã được yêu cầu. –

0

tôi đã có phương pháp tương tự. Bởi vì tôi không hiểu cách sử dụng toán tử mô-đun (%).

6% 3 = 0 * Điều này có nghĩa nếu bạn chia 6 bởi 3 bạn sẽ không có một phần còn lại, 3 là một yếu tố của 6.

Bây giờ bạn phải liên hệ nó với vấn đề nhất định của bạn.

nếu n% 3 == 0 * Điều này có nghĩa là, nếu số của tôi (n) chia hết cho 3 phần còn lại.

Thêm tuyên bố sau đó (in, trả lại) và tiếp tục

Các vấn đề liên quan