感觉最近总是写一道很简单的题目都要加一ton的头文件。
Problem B:单纯质因数(pprim)(nhoi2014小学甲组)
Time Limit:4000MS Memory Limit:65536K
Total Submit:56 Accepted:34
问题描述
读五年级的楠楠刚学完了质数、合数、因数、质因数等概念。
他还知道了每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的质因数.把一个合数用质因数相乘的形式表示出来,叫做分解质因数.
聪明爱动脑筋的楠楠突然对具有互不相同的质因数的合数产生了兴趣。例如:30=2*3*5,它有互不相同的质因数;70=2*5*7,它也有互不相同的质因数。若一个合数中所有的质因数互不相同,则把它称之为具有单纯质因数的合数。他想知道还有哪些数是单纯质因数的合数。
你现在要帮楠楠解决的问题是:已知N,依次输出N以内所有具有单纯质因数的合数。
输入格式:
输入数据只一个整数N(10<=N<=100000)。
输出格式:
依次输出N以内所有具有单纯质因数的合数。
输入样例:
12
输出样例:
6 10
Input
Output
Sample Input
Sample Output
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int e[10000];
bool zhishu(int);
bool huiwen(int);
bool zhishu(int n)
{
double a=n;
a=sqrt(a)+0.1;
for(int i=2;i<a;i++)
if(n%i==0) return false;
return true;
}
bool huiwen(int n)
{
int f=n;
int r=0;
while (f)
{
r=r*10+f%10;
f/=10;
}
if(n==r) return true;
else return false;
}
int main()
{
int n,j=1;
cin>>n;
for(int i=n+1; ;i++)
{
if(i==1) continue;
else
{
if(zhishu(i))
{
if(huiwen(i))
{
cout<<i<<endl;
break;
}
}
else continue;
}
}
return 0;
}
求更好的方法。