求助!!问题在哪?老是答案错误!
#include <stdio.h>
#include <math.h>
int prime( int p );
int PrimeSum( int m, int n );
int main()
{
int m, n, p;
scanf("%d %d", &m, &n);
printf("Sum of ( ");
for( p=m; p<=n; p++ ) {
if( prime(p) != 0 )
printf("%d ", p);
}
printf(") = %d\n", PrimeSum(m, n));
return 0;
}
/* 你的代码将被嵌在这里 */
int prime(int p)
{
if(p<=1)
{
return 0;
}
else if(p==2)
{
return 1;
}
else
{
for(int i=2;i<p;i++)
{
if(p%i==0)
{
return 0;
}
}
return 1;
}
}
int PrimeSum(int m,int n)
{
int a;
int sum=0;
for(a=m;a<=n;a++)
{
if(prime(a)==1)
{
sum+=a;
}
}
return a;
} 本帖最后由 昨非 于 2020-11-11 19:10 编辑
问问题之前,先说明你这个代码是干嘛的
应该得到什么结果,你想得到什么结果
现在是什么结果
就给个代码啥也不说,谁知道你要干嘛 昨非 发表于 2020-11-11 19:07
问问题之前,先说明你这个代码是干嘛的
哦哦,求规定区间内素数和 昨非 发表于 2020-11-11 19:07
问问题之前,先说明你这个代码是干嘛的
应该得到什么结果,你想得到什么结果
现在是什么结果
刚才心急忘了,实在抱歉 Bravo8 发表于 2020-11-11 19:10
哦哦,求规定区间内素数和
换个素数判断方法:
m 只需被 2 ~ 根号m 之间的每一个整数去除就可以判断为素数。如果 m 不能被 2 ~根号m间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
#include<stdio.h>
#include<math.h>
int main()
{
int start, end, i, k, m, flag = 1, h = 0;
do
{
printf("Input START and END:");
scanf("%d%d", &start, &end);
} while (!(start > 0 && start < end));
printf("......... prime table(%d-%d).........\n", start, end);
for (m = start; m <= end; m++) //m从start遍历到end
{
k = sqrt(m); //k等于根号m
for (i = 2; i <= k; i++) //遍历2到k,看能否整除
if (m % i == 0)
{
flag = 0;//如果可以flag变化
break;
}
if (flag) //这里对应不能整除的情况,也就是素数,打印出来
{
printf("%-4d", m);
h++;
if (h % 10 == 0)
printf("\n");
}
flag = 1;
}
printf("\nThe total is %d", h);
return 0;
} Bravo8 发表于 2020-11-11 19:13
刚才心急忘了,实在抱歉
没事没事,你可以先百度一下素数判断方法,最常用的方法是我下面说的那种,代码有现成的,你先看看
Bravo8 发表于 2020-11-11 19:10
哦哦,求规定区间内素数和
求和的话就在打印的位置那里定义个sum求和就好了 昨非 发表于 2020-11-11 19:16
求和的话就在打印的位置那里定义个sum求和就好了
谢谢大佬,已经提交正确了
页:
[1]