cpython3


私信TA

用户名:smartZhou

访问量:66928

签 名:

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

  自我简介:

TA的其他文章

题目描述:

输入两个正整数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分

3 人评分

  评论区

#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
  • »