函数大聚会
内存限制: 256 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较
题目描述
输入一个整数n。
1、判断它是否为素数,是输出 “ Y ”,不是输出 “ N ”;
2、输出这个数的各位数字之和;
3、求出这个数所有约数的和;
4、求出 1 到 n 的和;
5、输出这个数的倒序数(不包含前导 0)。
输入格式
一行一个整数。
输出格式
五行;
第一行 “ Y ” 或 “ N ”;
第二行,一个整数;
第三行,一个整数;
第四行,一个整数;
第五行,一个整数。
样例
样例输入
复制65
样例输出
复制N
11
84
2145
56
数据范围与提示
数据范围:
1 <= n <= 1000
#include <bits/stdc++.h>
using namespace std;
int n;
bool prime(int x) {
if(x <= 1) {
return false;
}
for(int i = 2; i * i <= x; i++) {
if(x % i == 0) {
return false;
}
}
return true;
}
int sum_wei(int x) {
int ans = 0;
while(x != 0) {
ans += x % 10;
x /= 10;
}
return ans;
}
int sum_yin(int x) {
int ans = 0;
for(int i = 1; i <= x; i++) {
if(x % i == 0) {
ans += i;
}
}
return ans;
}
int sum_n(int x) {
int ans = (1 + n) * n / 2;
return ans;
}
int hui(int x) {
int ans;
int a = n / 1000;
int b = n / 100 % 10;
int c = n / 10 % 10;
int d = n % 10;
if(1000 <= n) {
ans = a + 10 * b + 100 * c + 1000 * d;
} else if(100 <= n && n <= 1000) {
ans = b + 10 * c + 100 * d;
} else if(10 <= n && n <= 100) {
ans = c + 10 * d;
} else if(1 <= n && n <= 10) {
ans = d;
}
return ans;
}
int main() {
scanf("%d", &n);
if(prime(n) == true) {
printf("Y\n");
} else {
printf("N\n");
}
printf("%d\n", sum_wei(n));
printf("%d\n", sum_yin(n));
printf("%d\n", sum_n(n));
printf("%d", hui(n));
return 0;
}