如何用C语言编程“输入n个整数,求其中最大数及其所在的位置,并求出此n个数中素数的个数。”

如题所述

#include <stdio.h>
int gcd(int a, int b);
int main()
{
    int n, a, b, i, maxNum, count=0, flag=0;
    scanf("%d", &n);
    while(n--)
    {
        scanf("%d", &a);
        //用读到的第一个数初始化maxNum
        if (flag == 0)
        {
            maxNum = a;
            flag = 1;
        }
        maxNum = a>maxNum ? a : maxNum;
        for (i=1; i<a; i++)
        {
            b = gcd(a, i);
            //如果有一个比它小的最大公约数不是1,那就说明它不是素数
            if (b != 1)
            {
                break;
            }
        }
        if (i == a && a !=1)
        {
            count++;
        }
    }
    printf("最大的数是:%d,素数的个数是:%d\n",maxNum,count);
    return 0;
}
//求最大公约数
int gcd(int a, int b)
{
    if (b == 0)
    {
        return a;
    }
    return gcd(b, a%b);
}

追问

请问你调试了么

追答

不好意思,没仔细看题,没有找最大数的位置。

追问

喔喔!

我说我调试咋不对呢

呵呵

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-09
#include <stdio.h>
int prime (int n){ //判断是否为素数
     int i;
     for (i=2; i<n; i++)
        if (n%i == 0)
            return 0;
     return 1;
 } 
int main()
{
    int n,num,max,max_local=1,t,count=0; 
    scanf("%d",&n);
    if(n<1) return 0;
    scanf("%d",&max);//用第一个num初始化max
    t=n-1; 
    while(t--){
        scanf("%d",&num); 
        if(num>max){     
            max=num;//最大值
            max_local= n-t+1;//最大值位置
        } 
        if(prime(num)) count++;//计算素数个数    
    } 
    printf("最大值位置为第%d个  max=%d\n素数个数=%d\n",max_local,max,count); 
    return 0;
}

追问

谢谢

本回答被提问者采纳
相似回答