还以为有什么特别的技巧,原来数据这么弱!
Accepted | 1133 | C++ | 00:00.23 | 404K |
#include<stdio.h>
#include <math.h>
bool prime(int n)
{
int loop = (int)sqrt((float )n);
for(int i = 2; i <= loop; i++ )
if(n % i == 0) return false ;
return true ;
}
int sum(int n)
{
int ret = 0 ;
while (n)
ret += n % 10, n = n / 10 ;
return ret;
}
int sum1(int n)
{
int ret = 0, loop = (int)sqrt((float )n);
for(int i = 2; n > 1 && i <= loop; i++ )
if(n % i == 0 && prime(i))
while(n % i == 0 )
ret += sum(i), n /= i;
if(n > 1) ret += sum(n);
return ret;
}
int solve(int n)
{
while(n++ )
if(!prime(n) && sum(n) == sum1(n))
return n;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1133.txt", "r" , stdin);
#endif
int n;
while(scanf("%d", &n) != EOF && n != 0 )
printf("%d/n" , solve(n));
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0 ;
}
#include <math.h>
bool prime(int n)
{
int loop = (int)sqrt((float )n);
for(int i = 2; i <= loop; i++ )
if(n % i == 0) return false ;
return true ;
}
int sum(int n)
{
int ret = 0 ;
while (n)
ret += n % 10, n = n / 10 ;
return ret;
}
int sum1(int n)
{
int ret = 0, loop = (int)sqrt((float )n);
for(int i = 2; n > 1 && i <= loop; i++ )
if(n % i == 0 && prime(i))
while(n % i == 0 )
ret += sum(i), n /= i;
if(n > 1) ret += sum(n);
return ret;
}
int solve(int n)
{
while(n++ )
if(!prime(n) && sum(n) == sum1(n))
return n;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1133.txt", "r" , stdin);
#endif
int n;
while(scanf("%d", &n) != EOF && n != 0 )
printf("%d/n" , solve(n));
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0 ;
}