UVa 10235 - Simply Emirp

来源:互联网 发布:阿里云翼 编辑:程序博客网 时间:2024/05/14 07:36

题目:判断一个数和翻转是不是素数。

分析:简单题、数论。首先打表计算1000000内的素有素数,然后判断即可。

注意:翻转后的数字如果是原来的数字就不算emirp。

#include <iostream>#include <cstdlib>using namespace std;int prime[1000000];long rev( long dat ){long now = 0;while ( dat ) {now *= 10;now += dat%10;dat /= 10;}return now;}int main(){//打表计算素数for ( long i = 0 ; i < 1000000 ; ++ i )prime[i] = 1;for ( long i = 2 ; i < 1000000 ; ++ i )if ( prime[i] )for ( long j = 2*i ; j < 1000000 ; j += i )prime[j] = 0;long n;while ( cin >> n ) {cout << n;if ( !prime[n] )cout << " is not prime.\n";else if ( n != rev(n) && prime[rev(n)] )cout << " is emirp.\n";else cout << " is prime.\n";}return 0;}

原创粉丝点击