我想计算101到203之间偶数素数的总和。但是我的代码的输出是错误的,输出是52。 任何人都可以帮助我,以获得正确的输出,在我的代码中,我认为偶数数字肯定不是素数,这就是为什么我逃脱它们。我想通过prime函数使用这个方法来解决它。我该怎么办?非常感谢你
#include <stdio.h>
int prime(int n)
{
int i=2;
int n2;
n2 = n/2;
while (1<=n2) {
if (n%i == 0) {
return 0;
} else {
return 1;
}
i++;
}
}
int main()
{
int sum=0;
for (int i=101; i<=203; i+=2) {
if (prime(i)==1) {
}
sum+=1;
}
printf("%d \n",sum);
return 0;
}
答案 0 :(得分:1)
您的代码中存在多个问题。
在for
循环中:
for (int i=101; i<=203; i+=2) {
if (prime(i)==1){
}sum+=1;
语句sum+=1
应位于if
块内。
此外,您要将1
添加到sum
。相反,您应该添加i
,因为您希望得到素数之和:
sum+=i;
仅当prime()
循环检查条件1
为while
的所有值且{的值均为n%i == 0
时,函数i
才会返回i
{1}}它是true
。因此,您需要将return 1
移出while
循环。
此外,在while
的{{1}}循环中,这是不正确的:
prime()
应该是:
while (1<=n2) {
总的来说,应该是:
while (i<=n2) {
答案 1 :(得分:0)
首先:你不需要'i ++;'在你的素数方法中,因为这是无法访问的代码。
第二:尝试使用此函数检查数字是否为素数:
#include <stdio.h>
int prime(int n)
{
for (int i = 2; i < n; i++) {
if (n % i == 0 && i != n) return 0;
}
return 1;
}
int main()
{
int sum=0;
for (int i=101; i<=203; i+=2) {
if (prime(i)==1){
sum+=i;
}
}
printf("%d \n",sum);
}
答案 2 :(得分:0)
没有任何东西可以作为最重要的数字......你总是会得到0。
但要真正回答你的问题...
你真的不需要把i ++放在你的第一个功能中。其次,试试这个
for (int i=101; i<=203; i++)
{
i++
if (prime(i)==1)
{
sum+=i;
}
}
这应该有效。您不需要将总和增加1,每次有素数时都需要添加i。你得到52的原因是因为你总和+ = 1,它在for循环中将总和加起来为52次。