永发信息网

c语言:输出100之内的所有素数,每行输出10个素数。 不要课本上那种很长的,我要简明点的,正确的

答案:2  悬赏:30  手机版
解决时间 2021-11-29 21:23
  • 提问者网友:龅牙恐龙妹
  • 2021-11-28 22:43
c语言:输出100之内的所有素数,每行输出10个素数。 不要课本上那种很长的,我要简明点的,正确的
最佳答案
  • 五星知识达人网友:我住北渡口
  • 2021-11-28 23:38
//代码1
#include 

int isprime( int n ) {
    if( n < 2 ) return 0;
    for( int i = 2; i < n; ++i ) {
        if( n % i == 0 ) return 0;    
    }    
    return 1;
}

int main() {
    int cnt = 0;
    for( int i = 0; i <= 100; ++i ) {
        if( isprime(i) ){
            printf( "%d ", i );    
            cnt++;
        } 
        if( cnt == 10 ){
            cnt = 0;
            printf( "
" );
        }    
    }
    return 0;    

//代码2
#include 
#include 

//时间复杂度O(n^2) 
int isprime( int n ) {
    if( n < 2 ) return 0;
    int m = sqrt( n + 0.5 );//这里可以稍微改进一下。 
    for( int i = 2; i <= m; ++i ) {
        if( n % i == 0 ) return 0;    
    }    
    return 1;
}

int main() {
    int cnt = 0;
    for( int i = 0; i <= 100; ++i ) {
        if( isprime(i) ){
            printf( "%d ", i );    
            cnt++;
        } 
        if( cnt == 10 ){
            cnt = 0;
            printf( "
" );
        }    
    }
    return 0;    
}//代码3

#include 
#include 
int check[ 110 ];

//时间复杂度O(nloglogn) 
void get_table( int n ){
    for( int i = 2; i <= sqrt( n + 0.5 ); ++i )    if( !check[i] )
        for( int j = i * i; j <= n; j += i )    check[j] = 1;    
}

int main() {
    get_table( 100 );
    int cnt = 0;
    for( int i = 2; i <= 100; ++i ) {
        if( check[i] == 0 ){
            printf( "%d ", i );    
            cnt++;
        } 
        if( cnt == 10 ){
            cnt = 0;
            printf( "
" );
        }    
    }
    return 0;    

测试结果如下:

全部回答
  • 1楼网友:野慌
  • 2021-11-28 23:50

追答把100改成2,把200改成100还有把5还成10
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯