实施哥德巴赫';C代码中的s猜想
我真的被困在这里了。在过去的8个小时里,我一直在试着得到这个 我试着用哥德巴赫猜想把数字打印成素数之和。一旦它打印出数字n,它应该移动到n+1,直到达到上限 现在我有了这个实施哥德巴赫';C代码中的s猜想,c,algorithm,math,primes,goldbach-conjecture,C,Algorithm,Math,Primes,Goldbach Conjecture,我真的被困在这里了。在过去的8个小时里,我一直在试着得到这个 我试着用哥德巴赫猜想把数字打印成素数之和。一旦它打印出数字n,它应该移动到n+1,直到达到上限 现在我有了这个 999983 = 999983 + 0 #包括 int素数(int num); int main(){ 整数上,下,模板,x; printf(“输入下限:”); 扫描频率(“%d”及更低); printf(“输入上限:”); scanf(“%d”及以上); 对于(lower;lower有一个致命错误: #include &
999983 = 999983 + 0
#包括
int素数(int num);
int main(){
整数上,下,模板,x;
printf(“输入下限:”);
扫描频率(“%d”及更低);
printf(“输入上限:”);
scanf(“%d”及以上);
对于(lower;lower有一个致命错误:
#include <stdio.h>
int prime(int num);
int main() {
int upper, lower, tempL, x;
printf("Enter lower limit:");
scanf("%d", &lower);
printf("Enter upper limit:");
scanf("%d", &upper);
for (lower; lower <= upper; lower + 2) {
tempL = lower;
for (tempL; tempL != 0; tempL--) {
if (prime(tempL == 0) { //after decrementing we find a prime
x = lower - (tempL); x = the original lower limit minus the current decremented lower limit
if (prime(x) == 0) { //if x if prime do following
printf("%d = %d + %d\n", tempL, lower, x); //print
break;
}
}
}
}
}
int prime(int number) { //returns 0 if number is prime
int i;
for (i = 2; i < number / 2; i++) {
if (number % i == 0) {
return 1;
}
}
return 0;
}
tempL==0是一个比较tempL和0的表达式;如果tempL=0,则结果为1,否则为0。因此,可以调用prime(1)或prime(0)。在这两种情况下,prime()函数都返回0,因此永远不会执行if
哦,我又做了一次
函数“prime”返回的值完全错误。如果一个数字是prime,则返回0,如果不是prime,则返回1。除非数字从0到4,否则它总是返回0。这对于number=2或3是错误的,但是对于1和4是正确的…代码中存在多个问题:
- 您没有检查scanf的返回值,导致未定义的行为
- 你不能在循环中增加
lower
for(lower;lower你的prime()
函数在s=(int)sqrt(number);for(i=3;这里有几个问题。首先,请更改你的“for”循环:for(;lower)同意“使用合适的编译器并打开所有警告”。
#include <stdio.h>
int prime(int num);
int main() {
int upper, lower, tempL, x;
printf("Enter lower limit:");
scanf("%d", &lower);
printf("Enter upper limit:");
scanf("%d", &upper);
for (lower; lower <= upper; lower + 2) {
tempL = lower;
for (tempL; tempL != 0; tempL--) {
if (prime(tempL == 0) { //after decrementing we find a prime
x = lower - (tempL); x = the original lower limit minus the current decremented lower limit
if (prime(x) == 0) { //if x if prime do following
printf("%d = %d + %d\n", tempL, lower, x); //print
break;
}
}
}
}
}
int prime(int number) { //returns 0 if number is prime
int i;
for (i = 2; i < number / 2; i++) {
if (number % i == 0) {
return 1;
}
}
return 0;
}
for(lower;lower<=upper; lower+2)
if( prime(tempL == 0 ) //after decrementing we find a prime
for (; lower <= upper; lower += 2)
if (prime(tempL) == 0)
#include <stdio.h>
int isprime(int number) { //returns non zero if number is prime
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
return 0;
}
}
return 1;
}
int main(void) {
int upper, lower;
printf("Enter lower limit: ");
if (scanf("%d", &lower) != 1)
return 1;
printf("Enter upper limit: ");
if (scanf("%d", &upper) != 1)
return 1;
for (int n = lower; n <= upper; n += 2) {
for (int i = 1; i <= n / 2; i++) {
if (isprime(i) && isprime(n - i)) {
printf("%d = %d + %d\n", n, i, n - i);
break;
}
}
}
return 0;
}