C语言题目,在下思考良久,依然没有结果,还望各位大神指教,题目如图。

如题所述

第1个回答  2015-04-08
//第一题
#include <stdio.h>
#include <math.h>
int main(){
    int m;  // 输入的整数 
    int i;  // 循环次数
    int k;  // m 的平方根 

    printf("输入一个整数:");
    scanf("%d",&m);

    // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
    k=(int)sqrt( (double)m );
    for(i=2;i<=k;i++)
        if(m%i==0)
            break;

    // 如果完成所有循环,那么m为素数
    // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
    if(i>k)
        printf("%d是素数。\n",m);
    else
        printf("%d不是素数。\n",m);

    return 0;
}

//第二题
#include <stdio.h>
#include <math.h>
int main(){
    int m;  // 输入的整数 
    int i,j=0;  // 循环次数
    int k;  // m 的平方根 

    // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
    for(m=2;m<=100;m++){
     k=(int)sqrt( (double)m );
    for(i=2;i<=k;i++)
        if(m%i==0)
            break;

    // 如果完成所有循环,那么m为素数
    // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
    if(i>k){
     j++;
     printf("%d ",m);
     if(j%5==0)
     printf("\n");
    }
        
    } 


    return 0;
}

第2个回答  2015-04-08

授人以鱼不如授人以渔--这才是学习方法00

考虑思路:

    判断是否为素数,此数范围为m,设置一个i=2,让m对i取余,如果余数为0,说明能整除,即不是素数,考虑i的取值,最大的i应为m/2,即i<=m/2,放到for循环中进行循环,如果m/i一直不等于0,就说明m是素数;

    在1的基础上增加一个for循环嵌套使用。

    这是基本思路,如果还不了解,请先思考一下,再将你不懂得地方提出来让我解答。

    望采纳!

本回答被网友采纳
相似回答