#include<stdio.h>
int isprime(int x)
{
    int i;
     if(x<2) return 0;
     for(i=2;i<x;i++) if(x%i==0) return 0;
     return 1;
}
int main(void)
{
    int m,n,i,sum=0;
    scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
    {
        if(isprime(i))
        sum+=i;
    }
    printf("%d",sum);
    return 0;
}

解题思路:





注意事项:





参考代码:

点赞(11)
 

0.0分

6 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 24 条评论

jockey驾驶员 2年前 回复TA
#include<stdio.h>
extern int flag=1;
void isprime(int x);
int main()
{
	int m,n,i,sum=0;
	scanf("%d%d",&m,&n);
	if(m>n||m==n||m<2)
		printf("格式错误");
	else
	{
		for(i=0;m<=n;i++,m++)
		{
			isprime(m);
			if(flag==1)
				sum+=m;
		}
		printf("素数之和为%d\n",sum);
	}
}
void isprime(int x)
{
	int j;
	for(j=2;(j<=x-1)&&(flag);j++)
		if(x%j==0)
			flag=0;
}
为啥这个是错的呀,各位大佬
陈强 4年前 回复TA
妙啊,我也是这样写的,链表不会写
helena 4年前 回复TA
为什么函数中有return 1?作用是什么
迷离半醉 5年前 回复TA
@JiamTan 因为你没有考虑到 输入m为1的情况
江畔读书人 5年前 回复TA
我觉得很不错,跟我想的一样的
JiamTan 5年前 回复TA
#include<stdio.h>
int isprime(int x)
{
	int i,j=0;
	if(x==2)
	{
		return x;
	}
	else
	{
	   for(i=2;i<x;i++)
	   {
		  if(x%i==0)
		  {
			return j;
		  }
	      else
		  {
		  return x;
		  }
	   }
	}
	return 0;
}
int main()
{
	int add=0,m,n,i;
	scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
	{
        add+=isprime(i);
	}
	printf("%d",add);
	return 0;
}
说我答案错一半,有人可以帮我看一下吗
海洋之心 5年前 回复TA
@弈 else return(1); 写在函数的最后面
5年前 回复TA
#include "stdio.h"
int isprime(int x)
{
	int i;
	if(x==1)return(0);
	else if(x==2)return(1);
	else
	for(i=2;i<x;i++)
	{
		if(x%i==0)return(0);
		else return(1);
	}
}
void main()
{
    int n,m,i,k=0;
    scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
    	if(isprime(i)==1)k+=i;
    printf("%d",k);
}
求教为什么答案半错啊?
MaBorgia 6年前 回复TA
#include<stdio.h>

int isprime(int x)
{
    int flag=1,i;
    for(i=2;i<x;++i)
        {if(x%i==0)
            {
            flag=0;
            break;
            }
        else
            flag=1;
        }
    if(flag==1)
        return x;
    else
        return 0;
}

int main()
{
    int n,m,sum=0,j=0,i;
    scanf("%d %d",&m,&n);
    for(i=m;i<=n;i++)
    {
        j=isprime(i);
        sum=sum+j;
    }
    printf("%d",sum);
    return 0;
}
有大神帮忙看一下为什么错了???
张贻鑫 6年前 回复TA
#include<stdio.h>
int isprime(int m,int n)
{
	int i,j,sum;
	if(m<=2)
		sum=2;
	if(m>2)
		sum=0;
	for(i=m;i<=n;i++)
	{
		for(j=2;j<=i/2;j++)
			if(i%j==0)
				break;
			if(i%j!=0)
				sum+=i;
	}
	printf("%d",sum);
}
int main()
{
	int M,N;
	scanf("%d%d",&M,&N);
	isprime(M,N);
}

这个为什么是错的啊,各位大佬们