| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖
标题:求1-300中全部素数的平均值,请指正!
只看楼主 加入收藏
神殇2014
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2014-12-31
结帖率:33.33%
收藏
已结贴  问题点数:5 回复次数:7 
求1-300中全部素数的平均值,请指正!
#include<stdio.h>
int temp()
    {  int number;
            int i;
            for(number=3;number<=300;number++){
       for(i=2;i<number;i++){
           if(number%i==0)
           {return(number==0);} }
       return (number);}
    }
int fun()
    {  int number;
            int i;
            int times=2;
            for(number=3;number<=300;number++){
       for(i=2;i<number;i++){
           if(number%i==0)
           {return(times==0);} }
      times++;}
    }
void main()
{
   
    double average;
    int temp();
    int fun();
    int total=3,times=2;
    times+=fun();
    total+=temp();
    average=total/times;
    printf("%lf",average);
}
搜索更多相关主题的帖子: include number return 平均值 
2015-01-06 14:21
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int cur = 0;
int * numlist(int x, int y);
int * filter(int *p, int len);
int * newnum(int *p, int len);

int main(void) {
    int i, x, y, len, *pnum = NULL;
    double sum = 0;
    printf("查找某个整数区间内素数 (下限 上限) : ");
    scanf("%d%d", &x, &y);

    if(y - x >= 0 && x >= 2) {
        len = y - x + 1;

    } else if(y - 2 >= 0 && x < 2) {
        x = 2;
        len = y - x + 1;

    } else {
        printf("\n请检查输入值...\n");
        return 1;
    }

    pnum = newnum(filter(numlist(x, len), len), len);

    if(pnum) {
        printf("区间内的素数为:\n");

        for(i = 0; i < cur; i++) {
            printf("%d ", *(pnum + i));
            sum += *(pnum + i);
        }

        printf("\n平均值: %.2f\n", sum / cur);

    } else {
        return -1;
    }

    return 0;
}

int * numlist(int x, int len) {
    int i = 0, *p = NULL;

    if(len > 0) {
        p = malloc(len * sizeof(int));

    } else {
        return NULL;
    }

    if(p == NULL) {
        printf("*内存分配错误!");
        return NULL;

    } else {
        for(; i < len; i ++) {
            *(p + i) = x + i;
        }
    }

    return p;
}

int * filter(int *p, int len) {
    int i, j, k;

    if(p) {
        for(i = 0; i < len; i++) {
            if(*(p + i) != 0) {
                for(j = 2; j <= sqrt(*(p + i)); k = 0, j++) {
                    if(*(p + i) % j == 0) {
                        while(k * j <= sqrt(*(p + i))) {
                            *(p + i + j * k) = 0;
                            k++;
                        }

                        *(p + i) = 0;
                    }
                }
            }
        }
    }

    return p;
}

int * newnum(int *p, int len) {
    int i, j = 0, *pnew = NULL;

    if(p) {
        for(i = 0; i < len; i++) {
            if(*(p + i) != 0) {
                cur++;
            }
        }

        pnew = malloc(cur * sizeof(int));

        if(pnew != NULL) {
            for(i = 0; i < len; i++) {
                if(*(p + i) != 0) {
                    *(pnew + j) = *(p + i);
                    j++;
                }
            }

        } else {
            printf("**内存分配错误!\n");
            return NULL;
        }
    }

    return pnew;
}

Only the Code Tells the Truth             K.I.S.S
2015-01-06 16:23
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:2 
程序代码:
#include<stdio.h>
int prime(int n)//判断是否是素数
{
    int flag=1,i;
    for(i=2;i<n/2&&flag==1;i++)
    if(n%i==0)
    flag=0;
    return (flag);
    }
    int main()
    {
        int i,sum=1,n=0;
        for(i=2;i<=300;i++)
        {
            if(prime(i))
            {
                n++;
                sum+=i;
                }
            }
            printf("%d",sum/n);
            return 0;
        }

一片落叶掉进了回忆的流年。
2015-01-06 19:26
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
忘了1是不是素数,我是按是素数算的

一片落叶掉进了回忆的流年。
2015-01-06 19:28
halfuder
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2012-10-14
收藏
得分:0 
以下是引用诸葛欧阳在2015-1-6 19:28:49的发言:

忘了1是不是素数,我是按是素数算的

1不是素数,素数从2开始的。
2015-01-07 10:50
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
回复 5楼 halfuder
那sum的初始值应该赋为0

一片落叶掉进了回忆的流年。
2015-01-07 11:28
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用longwu9t在2015-1-6 16:23:54的发言:

 
#include  
#include  
#include  
 
int cur = 0;
int * numlist(int x, int y);
int * filter(int *p, int len);
int * newnum(int *p, int len);
 
int main(void) {
    int i, x, y, len, *pnum = NULL;
    double sum = 0;
    printf("查找某个整数区间内素数 (下限 上限) : ");
    scanf("%d%d", &x, &y);
 
    if(y - x >= 0 && x >= 2) {
        len = y - x + 1;
 
    } else if(y - 2 >= 0 && x < 2) {
        x = 2;
        len = y - x + 1;
 
    } else {
        printf("\n请检查输入值...\n");
        return 1;
    }
 
    pnum = newnum(filter(numlist(x, len), len), len);
 
    if(pnum) {
        printf("区间内的素数为:\n");
 
        for(i = 0; i < cur; i++) {
            printf("%d ", *(pnum + i));
            sum += *(pnum + i);
        }
 
        printf("\n平均值: %.2f\n", sum / cur);
 
    } else {
        return -1;
    }
 
    return 0;
}
 
int * numlist(int x, int len) {
    int i = 0, *p = NULL;
 
    if(len > 0) {
        p = malloc(len * sizeof(int));
 
    } else {
        return NULL;
    }
 
    if(p == NULL) {
        printf("*内存分配错误!");
        return NULL;
 
    } else {
        for(; i < len; i ++) {
            *(p + i) = x + i;
        }
    }
 
    return p;
}
 
int * filter(int *p, int len) {
    int i, j, k;
 
    if(p) {
        for(i = 0; i < len; i++) {
            if(*(p + i) != 0) {
                for(j = 2; j <= sqrt(*(p + i)); k = 0, j++) {
                    if(*(p + i) % j == 0) {
                        while(k * j <= sqrt(*(p + i))) {
                            *(p + i + j * k) = 0;
                            k++;
                        }
 
                        *(p + i) = 0;
                    }
                }
            }
        }
    }
 
    return p;
}
 
int * newnum(int *p, int len) {
    int i, j = 0, *pnew = NULL;
 
    if(p) {
        for(i = 0; i < len; i++) {
            if(*(p + i) != 0) {
                cur++;
            }
        }
 
        pnew = malloc(cur * sizeof(int));
 
        if(pnew != NULL) {
            for(i = 0; i < len; i++) {
                if(*(p + i) != 0) {
                    *(pnew + j) = *(p + i);
                    j++;
                }
            }
 
        } else {
            printf("**内存分配错误!\n");
            return NULL;
        }
    }
 
    return pnew;
}

代码写的有意思
2015-01-07 11:33
神殇2014
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2014-12-31
收藏
得分:0 
谢谢。不过我是初学者,请不要用太复杂的语句
2015-01-09 20:56
快速回复:求1-300中全部素数的平均值,请指正!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027241 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved