目录
G.Num
题目描述:
链接:G-Num_第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛 (nowcoder.com)
来源:牛客网
Phenix有一个正整数NNN,他想知道正整数N是否可以写成a∗b+a+ba*b+a+ba∗b+a+b的形式(其中a>0,b>0a>0,b>0a>0,b>0)
例如3=1∗1+1+13=1*1+1+13=1∗1+1+1,如果可以请输出"Yes",否则输出"No"
输入描述:
一个正整数N(0<N<2×109)N(0<N<2\times10^9)N(0<N<2×109)
输出描述:
“Yes”或者“No“
示例
输入1
2
输出1
No
输入2
8
输出2
Yes
思路:
n = a * b + a + b, 可以两边同时 加一, 变成 (n + 1) = (a + 1) * (b + 1);
因为a,b 都大于零,n+1,就是一个大于等于四的合数
所以只要判断 n+1 是否大于等于四,并且是否是质数即可
代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
typedef unsigned long long ull;
typedef long long ll;
int main() {
int n, a, b, flag = 0;
scanf("%d", &n);
n++;
if (n < 4) printf("No");
else {
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
printf("Yes");
flag = 1;
break;
}
}
if (flag == 0)printf("No");
}
return 0;
}