cpython3


私信TA

用户名:smartZhou

访问量:73611

签 名:

等  级
排  名 37
经  验 13166
参赛次数 1
文章发表 99
年  龄 0
在职情况 学生
学  校
专  业 计算机科学与技术

  自我简介:

题目描述:

输入两个正整数m和n(m<n),求m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。

输入

m n

输出

素数和

样例输入

2 3

样例输出

5

解题思路:
本题要求定义并调用isprime(x)。可能有部分朋友上来直接写isPrime函数有点小难度,那么我采用的方法是先"一气呵成"两个for循环,判断如果是素数,累加就行,不是素数跳出循环。然后把里面的实现代码封装成isprime(x)函数即可!

对于算法如果不是太理解,可以看看下面这篇文章,都是相同的算法,讲解的比较详细!

https://blog.dotcpp.com/a/56754

注意事项:
下面两种都可以成功通过见面测试! 感兴趣的可以参考下!
参考代码(直接法):

#include <stdio.h>
int main()
{
	int m,n,sum=0;
	scanf("%d%d",&m,&n);
	for(int i=m; i<=n; i++)
	{
		for(int j=2; j<=i; j++) //j是被除数,j取2~i之间,如果都不能整除,则i是素数
		{
			if(i%j==0&&i!=j)
				break;  //不是素数,跳出 
			else if(i%j==0&&i==j)
				sum+=i; //是素数,累加	
		}
	}
	printf("%d",sum);
}


方法二:(isPrime函数)

#include <stdio.h>
int isPrime(int m,int n); //声明isPrime()函数 
int main()
{
	int m,n;
	scanf("%d%d",&m,&n);
	printf("%d",isPrime(m,n));
}
int isPrime(int m,int n)  //实现isPrime()函数 
{
	int sum=0;
	for(int i=m; i<=n; i++)
	{
		for(int j=2; j<=i; j++) 
		{
			if(i%j==0&&i!=j)
				break; 
			if(i%j==0&&i==j)
			{
				sum+=i;		
			}
		}
	}
	return sum;	
}


 

0.0分

10 人评分

  评论区

#include<stdio.h>
int main()
{
	int m,n,a=0,b=0;
	int i;
	scanf("%d%d",&m,&n);
	if(n<m)
	{
		a=n;
		n=m;
		m=a;
	}
	for(i=m;i<=n;i++)
	{
		b+=isprime(i);
	}
	printf("%d\n",b);
	return 0;
}
int	isprime(int x);
int	isprime(int x)
{
	int i,k=0;
	int sum=0;
	for(i=1;i<=x;i++)
	{
		if(x%i==0)
		k++;
	}
	if(k==1||k==2)
	{
		sum+=x;
	}
	return sum;
}
2024-03-15 13:04:08
#include<stdio.h>
#include<math.h>
bool isprime(int n)
{
	if(n<=1)
	return false;
	for(int i=0;i<=sqrt(n);i++)
	{
		if(n%i==0)
		return false;
	}
	return true;
}
int main()
{
	int m,n;
	scanf("%d %d",&m,&n);
	int t=0;
	for(int i=m;i<=n;i++)
	{
		if(isprime(i))
		t+=i;
	}
	printf("%d",t);
	return 0;
}
2024-03-14 19:27:38
#include <stdio.h>
#include <string.h>
int ifprime(int m,int n)
{
    // printf("%d %d\n",m,n);
    int sum = 0,flag;
    for(int i=m;i<=n;i++)
    {
        flag = 1;
        for(int j =2;j<i;j++)
        {
            if(i%j==0)
            {
                flag = 0;
            }
        }
        if(flag == 1){
            sum = sum +i;
        }
    }
    printf("%d",sum);
}
int main(){
    int m,n;
    scanf("%d%d",&m,&n);
    ifprime(m,n);
    return 0;
}
为什么只有50分呀
2024-02-29 22:05:21
#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);
}
求教为什么答案半错啊?
2019-02-21 02:03:00
  • «
  • 1
  • »