美素

2019_GDUT_新生专题IV数论 G

二次信任 提交于 2020-01-21 19:28:57
题目:美素数 题目链接: https://vjudge.net/contest/351853#problem/G 题目描述: 美素数:各位相加后,依然是素数。 在给出区间内找美素数的个数。 1.得出素数表 2.找美素数 3.标记美素数的位置 4.通过位置得区间美素数个数。 代码: # include <stdio.h> int a [ 1000000 ] , b [ 80000 ] , c [ 80000 ] ; int f ( int x ) //找各位相加的出的结果 { int d = 0 ; while ( x / 10 ) { d + = x % 10 ; x / = 10 ; } return x + d ; } int main ( ) { int i , k , j , s , t , g ; for ( i = 0 ; i < 1e6 ; i ++ ) { a [ i ] = i ; } for ( i = 2 , k = 0 ; i < 5e5 ; i ++ ) //用线性筛搞个质数表 { if ( a [ i ] ) b [ k ++ ] = i ; for ( j = 0 ; j < k ; j ++ ) { if ( b [ j ] * i > 1e6 ) break ; a [ b [ j ] * i ] = 0 ; if ( i % b [ j ] ==