庞果网-在线编程挑战 幸运数 简单数论.......

#include                                        
#include                                       
#include                                         
#include                                      
using namespace std;                                    
bool flag[800];                                         
void primmake()          //使用筛选法构造素数表                               
{                                                       
    memset(flag,0,sizeof(flag));                        
    flag[1]=1;                                          
    for(int i=2;i<=800;i++)                             
    {                                                   
        if(!flag[i]){                                   
            for(int j=2;i*j<=800;j++)flag[i*j]=1;       
        }                                               
    }                                                   
}                                                       
int sumdigit(int x){                                    
    int sum=0;                                          
    while(x){                                           
        sum+=x%10;                                      
        x/=10;                                          
    }                                                   
    return sum;                                         
}                                                       
int sqdigit(int x){                                     
    int sum=0;                                          
    while(x){                                           
        sum+=(x%10)*(x%10);                             
        x/=10;                                          
    }                                                   
    return sum;                                         
}                                                       
bool luck(int x){                                       
    int sum0=sumdigit(x);                               
    int sum1=sqdigit(x);                                
    if(!flag[sum0] && !flag[sum1])return 1;             
    return 0;                                           
}                                                       
int lucky(int x,int y) {                                
    int cnt=0;                                          
                                                        
    for(int i=x;i<=y;i++){                              
        if(luck(i))cnt++;                               
    }                                                   
    return cnt;                                         
}                                                       
//start 提示:自动阅卷起始唯一标识,请勿删除或增加。    
int main()                                              
{                                                       
    //main函数方便你自行测试,可不用完成                
    primmake();                                         
    cout<

你可能感兴趣的:(Algorithm-数论,特殊数,庞果网,编程)