求素数
题目内容:我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15
#include <stdio.h>
int main()
{
int n,m;
int sum=0;
scanf("%d %d",&n,&m);
if( 0<n & n<=m & m<=200)
{
while(n<=m)
{
int i;
int p=1;
for( i=2 ; i<n ; i++ )
{
if( n%i == 0)
{
p=0;
break;
}
}
if(p==1)
{
sum+=n;
}
n++;
}
printf("%d",sum);
}else{
return 0;
}
return 0;
}
是哪里理解错了嘛?想到崩溃,不会求素数和了。。 先说你的语法问题
if( 0<n & n<=m & m<=200)
这条语句是什么意思?
C语言单个&的意思可以是取地址,也可以是位与运算符;
C++除了以上两个意思还可以表示对象的引用。
关系与运算符是&&!
语法有问题,而且你的代码逻辑是求n到m之间的素数和 本帖最后由 bin554385863 于 2019-10-27 17:43 编辑
我很好奇2到4之间的素数和你是怎么算到15的;
#include <stdio.h>
void func()
{
int m = 0, n = 0, sum = 0, count = 0;
printf("请输入范围,最小值应大于0\n");
scanf("%d%d", &m, &n);
int _max = m > n ? m : n;//上限
int _min = m < n ? m : n;//下限
if (_min < 0)
{
printf("DATE ERROR!");
}
else
{
for (size_t i = _min; i <= _max; i++)
{
for (size_t j = 1; j <= i; j++)
{
if (i % j == 0)
{
count++;//判断因数的个数
}
}
if (count == 2)//因数如果只有2个则其必为质数
{
sum += i; //累加
}
count = 0;//重置计数器
}
}
printf("%d ", sum);
}
int main(int argc, char * argv[])
{
while (1)
{
func();
printf("\n");
}
return 0;
}
#include <stdio.h>
void main()
{
int n,m, sum=0 ;
int i,j;
printf("请输入2个数字n和m用,隔开0<n<=m<=200 \n");
scanf("%d,%d",&n,&m);
if(0<n&&n<=m&&m<=200)
{
for (i=n; i<=m; i++)
{
for(j=2;j<=m/2;j++)
{
if(i%j==0)
{
break;
}
if(j>i/2)
{
sum = sum+i;
break;
}
}
}
printf("所有素数的和是%d\n",sum);
}
else
{
printf("请重新输入\n");
}
} bin554385863 发表于 2019-10-27 15:50
先说你的语法问题
if( 0
谢谢指正{:5_92:} 不过题目中求素数和,为啥是15而不是,2+3为5?
#include<stdio.h>
int main()
{
int x=2;
int cnt=0;
int q,w;
int e=0;
scanf("%d %d",&q,&w);
q=2;
w=4;
while(cnt<=200)
{
int b=1;
int i;
for(i=2;i<x;i++)
{
if(x%i==0)
{
b=0;
break;
}
}
if(b==1)
{
cnt++;
if(q<=cnt && cnt<=w)
{
e+=x;
}
}
x++;
}
printf("%d",e);
return 0;
}
这段代码算出来的就是对的?新人表示不懂。。还望大佬指教,十分感谢{:5_111:} bin554385863 发表于 2019-10-27 17:34
我很好奇2到4之间的素数和你是怎么算到15的;
题目就是为15,新人的俺,三观感觉都被粉碎了,表示也不懂,感觉数学没学好{:5_100:}
if语句里面&改为&&就好了
页:
[1]