Đề bài: nhận vào 1 số nguyên dương N. Kiểm tra xem số N có phải là số Amstrong hay không? Sau đó hãy in ra các số amstrong có 3, 4 chữ số.
Số Amstrong (còn gọi là là narcissistic number hoặc pluperfect digital invariants - PPDI) nếu tổng lũy lũy thừa bậc n của các chữ số của nó bằng chính nó.
Ví dụ: 153 là số amstrong vì 153 = 1^3 + 5^3 + 3^3,
tương tự 370 cũng là 1 số amstrong vì 370 = 3^3 + 7^3 + 0^3
Bài giải:
Số Amstrong (còn gọi là là narcissistic number hoặc pluperfect digital invariants - PPDI) nếu tổng lũy lũy thừa bậc n của các chữ số của nó bằng chính nó.
Ví dụ: 153 là số amstrong vì 153 = 1^3 + 5^3 + 3^3,
tương tự 370 cũng là 1 số amstrong vì 370 = 3^3 + 7^3 + 0^3
Bài giải:
#include <stdio.h>
int SoChuSo(int n){
int d = 0;
while(n>0){
d++;
n=n/10;
}
return d;
}
int LuyThua (int x,int n){
int kq = 1;
for(int i=0;i<n;i++)
kq=kq*x;
return kq;
}
int LaSoAmstrong(int n){
int n1=n;
int n2=0;
int scs = SoChuSo(n);
while(n1>0){
int k = n1%10;
n2+=LuyThua(k,scs);
n1=n1/10;
}
return n == n2;
}
int main(){
/*int n;
printf("nhap so n: ");
scanf("%d",&n);
if (LaSoAmstrong(n)){
printf("So %d la so Amstrong",n);
}
else{
printf("So %d khong la so Amstrong",n);
}*/
printf("Cac so amstrong co 3,4 chu so la: \n");
for (int i=100;i<=9999;i++){
if (LaSoAmstrong(i))
printf("%5d",i);
}
return 0;
}
Xem Video:
0 nhận xét:
Đăng nhận xét