2011-08-09 37 views
8

Cách nào tốt nhất để tìm hiểu xem phân chia của hai số sẽ trả về phần còn lại? Ví dụ: tôi có một mảng với các giá trị {3,5,7,8,9,17,19}. Bây giờ tôi cần phải tìm ước số hoàn hảo của 51 từ mảng trên. Có cách nào đơn giản hơn để giải quyết vấn đề này không?Làm thế nào để tìm phần còn lại của một bộ phận trong C?

+0

Tôi tìm phạm vi '{3,5,7,8,9,17,19}' khá đáng ngờ. Nó * gần như * có vẻ như bạn đang sử dụng số nguyên tố ở đây, nhưng 8 không phải là số nguyên tố và 11 và 13 bị thiếu ... – DarkDust

Trả lời

15

Bạn có thể sử dụng toán tử % để tìm phần còn lại của một bộ phận, và so sánh kết quả với 0.

Ví dụ:

if (number % divisor == 0) 
{ 
    //code for perfect divisor 
} 
else 
{ 
    //the number doesn't divide perfectly by divisor 
} 
+2

Mô-đun và lời nhắc khác với số âm: http://stackoverflow.com/questions/13683563/whats-the-difference-between-mod-and-remainder – calandoa

+0

điểm tốt, nhưng tôi không thấy cách thay đổi séc Đối với phân chia hoàn hảo –

+0

Câu trả lời là phù hợp với câu hỏi, nhưng C là rất mờ về mối quan hệ giữa%, modulo và phần còn lại của nhà khai thác, và tuyên bố của bạn chỉ là một chút không chính xác, vì vậy tôi chỉ cần thêm một liên kết để làm rõ điểm này. – calandoa

4

Sử dụng toán tử mô đun %, nó trả về phần còn lại.

int a = 5; 
int b = 3; 

if (a % b != 0) { 
    printf("The remainder is: %i", a%b); 
} 
+0

@Joey - tại sao bạn xóa ví dụ này? – MByD

+0

Tôi đã không; Tôi vừa sửa lỗi đánh máy và thêm ký hiệu toán tử. Có thể là các chỉnh sửa đồng thời đã bị xung đột ở đây. SO thậm chí còn kém hơn so với MediaWiki. I E. khi tôi đang chỉnh sửa nó, tôi chỉ nhìn thấy một câu và không nhận được một thông báo hoặc trên sửa đổi đồng thời. Xin lỗi:/ – Joey

+0

Lời xin lỗi của tôi ... Tôi nghĩ rằng bạn đã có một số vấn đề với ví dụ của tôi ... Và cảm ơn! – MByD

1

Tất cả các câu trả lời ở trên là chính xác. Chỉ cần cung cấp tập dữ liệu của bạn để tìm số chia hoàn hảo:

#include <stdio.h> 

int main() 
{ 

int arr[7] = {3,5,7,8,9,17,19}; 
int j = 51; 
int i = 0; 

for (i=0 ; i < 7; i++) { 
    if (j % arr[i] == 0) 
     printf("%d is the perfect divisor of %d\n", arr[i], j); 
} 

return 0; 
} 
+0

OP có lẽ nên làm rõ liệu 3 hoặc 9 có nên được coi là ước số hoàn hảo trong những trường hợp đó hay không. Tôi giả định 9 bởi vì nếu không thì không có điểm nào trong đó. Trong trường hợp đó, bạn cần lặp lại theo thứ tự ngược lại. – tinman

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