C++ kiểm tra xem số có phải là lũy thừa của 2 không
Đầu tiên, chúng tôi cung cấp một ví dụ để giải thích vấn đề. Sau đó, chúng tôi đã đưa ra ba cách tiếp cận khác nhau để giải quyết vấn đề này. Cuối cùng, chúng tôi đã xem qua các cách triển khai của chúng, với mỗi cách tiếp cận có độ phức tạp về thời gian tốt hơn cách trước Show
tác giả dưới cùng Nếu bạn có một vài năm kinh nghiệm trong Khoa học máy tính hoặc nghiên cứu và bạn muốn chia sẻ kinh nghiệm đó với cộng đồng, hãy xem Nguyên tắc đóng góp của chúng tôi
Chương trình C để kiểm tra xem một số có phải là lũy thừa của hai hay không bằng toán tử bitwise#includeĐầu ra Enter an integer 16 16 is power of 2 Enter an integer 15 16 is not a power of 2 Trong chương trình này, chúng ta sẽ đọc một số nguyên và kiểm tra xem số đó có phải là lũy thừa của hai (2) hay không. Ví dụ số 12 là lũy thừa của 2 vì nó là bội số của 2 Nguyên lý thực hiện chương trình này - Chia một số cho 2 cho đến khi số không bằng 1, nếu trong vòng lặp số dư không bằng 0 thì số không phải là lũy thừa của 2 ngược lại số là lũy thừa của 2 Kiểm tra sức mạnh của hai (2) bằng chương trình C/*C program to check number is power or 2 or not.*/ #include int main() { int num; int tempNum,flag; printf("Enter an integer number: "); scanf("%d",&num); tempNum=num; flag=0; /*check power of two*/ while(tempNum!=1) { if(tempNum%2!=0){ flag=1; break; } tempNum=tempNum/2; } if(flag==0) printf("%d is a number that is the power of 2.",num); else printf("%d is not the power of 2.",num); return 0; } Sử dụng chức năng xác định người dùng/*C program to check number is power or 2 or not.*/ #include /*function definition*/ int isPowerOf2(int number) { while(number!=1) { if(number%2!=0) return 0; number=number/2; } return 1; } int main() { int num; printf("Enter an integer number: "); scanf("%d",&num); if(isPowerOf2(num)) printf("%d is a number that is the power of 2.",num); else printf("%d is not the power of 2.",num); return 0; } đầu ra First Run: Enter an integer number: 32 32 is a number that is the power of 2. Second Run: Enter an integer number: 36 36 is not the power of 2. Chương trình thao tác số C » Chương trình C để tìm xem một không có phải là sức mạnh của hai Cải thiện bài viết Lưu bài viết Thích bài viết
Cải thiện bài viết Lưu bài viết Cho một số nguyên dương, viết hàm tìm xem đó có phải là lũy thừa của 2 hay không. Input : n = 4 Output : Yes 22 = 4 Input : n = 7 Output : No Input : n = 32 Output : Yes 25 = 32 1. Một phương pháp đơn giản cho việc này là chỉ cần lấy nhật ký của số trên cơ số 2 và nếu bạn nhận được một số nguyên thì số đó là lũy thừa của 2. CEnter an integer 16 16 is power of 228 Enter an integer 16 16 is power of 229 Enter an integer 16 16 is power of 230 Enter an integer 16 16 is power of 231 Enter an integer 16 16 is power of 232
Enter an integer 16 16 is power of 233 ________ 70 ________ 71 ________ 72 ________ 73 No Yes4 No Yes5 No Yes6 No Yes7_______78 No Yes9 No Yes0 No Yes1 No Yes2
No Yes3 No Yes2 No Yes5 No Yes4 No Yes5 No Yes8 No Yes9 No Yes7 No Yes1 No Yes2 No Yes9 No Yes7 No Yes5 No Yes6 No Yes5 No Yes8 No Yes9 No Yes7 No Yes1 No Yes2 No Yes9 No Yes7 No Yes5 No Yes6 No Yes5 No Yes6 Enter an integer 16 16 is power of 2289 No Yes2
Enter an integer 16 16 is power of 2291 đầu ra. No Yes
Thời gian phức tạp. O(log2n) Không gian phụ trợ. Ô(1) 2. Một giải pháp khác là tiếp tục chia số cho hai, tôi. e, làm n = n/2 lặp đi lặp lại. Trong bất kỳ lần lặp nào, nếu n%2 trở thành khác 0 và n không phải là 1 thì n không phải là lũy thừa của 2. Nếu n trở thành 1 thì đó là lũy thừa của 2. CEnter an integer 16 16 is power of 231 Enter an integer 16 16 is power of 232
Enter an integer 16 16 is power of 233 ________ 70 ________ 71 ________ 72 ________ 73 No Yes4 No Yes5 Enter an integer 16 16 is power of 2301 Enter an integer 16 16 is power of 2302 Enter an integer 16 16 is power of 2303 No Yes6 Enter an integer 16 16 is power of 2289 No Yes5 Enter an integer 16 16 is power of 2307 Enter an integer 16 16 is power of 2308 Enter an integer 16 16 is power of 2303 Enter an integer 16 16 is power of 2301 Enter an integer 16 16 is power of 2311 Enter an integer 16 16 is power of 2312 No Yes6 Enter an integer 16 16 is power of 2289 Enter an integer 16 16 is power of 2303 Enter an integer 16 16 is power of 2316 No Yes5 No Yes2 No Yes5 No Yes6 Enter an integer 16 16 is power of 2321 No Yes2
Enter an integer 16 16 is power of 2323 No Yes2 No Yes5 No Yes4 No Yes5 No Yes8 No Yes9 No Yes7 No Yes1 No Yes2 No Yes9 No Yes7 No Yes5 No Yes6 No Yes5 No Yes8 No Yes9 No Yes7 No Yes1 No Yes2 No Yes9 No Yes7 No Yes5 No Yes6 No Yes5 No Yes6 Enter an integer 16 16 is power of 2289 No Yes2 đầu ra. No Yes
3. Tất cả lũy thừa của hai số chỉ có một bit được đặt. Vì vậy, đếm số không. của các bit đã đặt và nếu bạn nhận được 1 thì số đó là lũy thừa của 2. Vui lòng xem Đếm bit tập hợp trong một số nguyên để đếm bit tập hợp. CEnter an integer 16 16 is power of 232 No Yes12
Enter an integer 16 16 is power of 233 ________ 70 ________ 71 ________ 72 ________ 717 No Yes4 No Yes5 No Yes20 No Yes5 No Yes6 No Yes23 No Yes2
Enter an integer 16 16 is power of 2323 No Yes2 No Yes5 No Yes4 No Yes5 No Yes8 No Yes9 No Yes7 No Yes1 No Yes2 No Yes9 No Yes7 No Yes5 No Yes6 No Yes5 No Yes8 No Yes9 No Yes7 No Yes1 No Yes2 No Yes9 No Yes7 No Yes5 No Yes6 No Yes5 No Yes6 Enter an integer 16 16 is power of 2289 No Yes2 đầu ra. No Yes
Vui lòng tham khảo toàn bộ bài viết về Chương trình để tìm hiểu xem một không có phải là lũy thừa của hai hay không để biết thêm chi tiết. Ghi chú cá nhân của tôi arrow_drop_up Tiết kiệm Vui lòng Đăng nhập để nhận xét.Làm thế nào để có được sức mạnh của 2 trong C?pow() là hàm lấy lũy thừa của một số, nhưng chúng ta phải sử dụng #include
Làm cách nào để kiểm tra xem số có phải là lũy thừa của 3 trong C không?Phương pháp đệ quy. Kiểm tra xem số đó có chia hết cho 3 không, nếu có thì tiếp tục kiểm tra tương tự cho số/3 theo cách đệ quy . Nếu số có thể giảm đi 1 thì số đó chia hết cho 3 nếu không. |