参考代码:

#include<stdio.h>
int isprime(int M,int N)
{
	int i,j,sum=0,flag; 
	for(i=M;i<=N;i++)
	{
		flag=1;
		for(j=2;j<i;j++)
		{
		
			if(i%j==0)
			{
			flag=0;
	        }
		}
		if(flag==1)
		{
		sum=sum+i;
		}
	}
	if(M>1)
	return sum;
	else
	return sum-1;
}
int main()
{
	int M,N,sum;
	scanf("%d%d",&M,&N);
	sum=isprime(M,N);
	printf("%d\n",sum);
	return 0;
}


点赞(3)
 

0.0分

3 人评分

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

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

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

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

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

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

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

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

评论列表 共有 8 条评论

P 4年前 回复TA
@P 就是编译错误,说可能越界什么的
P 4年前 回复TA
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int isprime(int d[100],int t)
{
	int i=0,j;
	int z=0,q=1;
		for (i = 0; i < t; i++)
		{
			for (j = 2; j <d[i]; j++)
			{
				if (d[i] % j == 0)
				{
					q = 0;
				}
				
			}
			if (q == 1)
			{
				z = d[i] + z;
			}
			q = 1;
		}
		if (d[0] == 1)
		{
			return z-1;
		}
		else
		{
			return z;
		}
}
int main(void)
{
	int a, b,i,t,z=0;
	int d[100] = { 0 };
	scanf("%d%d", &a, &b);
	t = b - a+1;
	for (i=0; a <= b; i++)
	{
		 d[i] = a;
		 a = a + 1;
	}
	z=isprime(d,t);
	printf("%d", z);

	return 0;
}想问一下为啥编译错误,自己运行可以呀?
墨染 4年前 回复TA
@弈 我也是这个思路,答案也是半解
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);
}
求教为什么答案半错啊?
那个人 6年前 回复TA
@那个人 谢谢
wu 6年前 回复TA
@那个人 j应该被初始为0  1不是质数
wu 6年前 回复TA
@那个人 #include <stdio.h>  int isprime(int m,int n) { 	int i,j=0,x,sum=0; 	for(x=m;x<=n;x++) 	 { 		 for(i=2;i<x;i++) 		{					 			if(x%i==0)	 				j=1;						  		}  		 if(j==0)  			 { 			 	if(x!=1) 				 sum=sum+x; 		     } 		     j=0; 	} 	 return sum;  }  int main() { 	int m,n,sum; 	scanf("%d %d",&m,&n); 	    sum=isprime(m,n); 	printf("%d\n",sum); 	getchar(); 	getchar(); 	return 0; }
那个人 6年前 回复TA
请教一下为什么我这个无法得出正确答案,比如输入13 17,得到的答案为13

#include <stdio.h>

int isprime(int m,int n)
{
	int i,j=0,x,sum=0;
	for(x=m;x<=n;x++)
	 {
		 for(i=2;i<x;i++)
		{					
			if(x%i==0)	
				j=1;						 
		} 
		 if(j==0) 
			 {
				 sum=sum+x;
		     }
	}
	 return sum; 
}

int main()
{
	int m,n,sum;
	scanf("%d %d",&m,&n);
	    sum=isprime(m,n);
	printf("%d\n",sum);
	getchar();
	getchar();
	return 0;
}