【发布时间】:2009-12-27 12:08:31
【问题描述】:
基本上,一个程序可以找到一个数的最大素数。不知道逻辑是否正确,因为我无法运行它来测试它。我知道这很长。但请原谅我。
//largest_prime.c
#include <stdio.h>
int main() {
int num,large;
int prime(int);
int lprime(int);
printf("Enter number: ");
scanf("%d",&num);
large = lprime(num);
printf("Largest Prime = %d\n",large);
return 0;
}
int lprime(int num) {
int i=num-1,large;
while (i!=-1) {
if (num%i==0) {
if (prime(i)==1) {
large=i;
i=-1;
}
i--;
}
return large;
}
int prime(int num) {
int prime,i=num-1;
while (i!=-1) {
if(num%i==0) {
if(i!=1) {
i=-1;
return 0;
}
else
return 1;
}
i--;
}
}
我使用 GCC 在终端(我使用 Mac)将其作为输出:
largest_prime.c: In function ‘lprime’:
largest_prime.c:26: error: nested functions are disabled, use -fnested-functions to re-enable
largest_prime.c:39: error: syntax error at end of input
我尝试了 -fnested-functions 来重新启用。我明白了:
largest_prime.c: In function ‘lprime’:
largest_prime.c:39: error: syntax error at end of input
请帮忙!
【问题讨论】:
-
请注意,这就是为什么我讨厌 Java 风格的大括号(前一行末尾的左大括号),你一眼看不出你正在关闭哪个大括号缩进级别。
-
@Blindy:这就是我们有 IDE 的原因,但点得很好。
-
@r0ach:为什么在
main中声明prime和lprime?为什么不在main之前声明它们,就像标准的 C 风格一样? -
在前一行的末尾有左大括号比 Java 还要老,我可能会补充。