我在Ubuntu Mate中安装了Eclipse。当我编译以下程序时,它编译它而不会给出任何错误。它在Eclipse文本编辑器窗口中没有显示任何警告或错误,但是当我编译它时,它表示所需项目中存在错误。继续推出?"。
这是我的代码:
#include <stdio.h>
int main(){
int a,b,num,div,exi;
printf("this program find out the prime numbers\nnow enter the number until you want to find prime numbers here:- ");
scanf("%d",&b);
for(num=1;num<=b;num++)
{
for(div=2;div<=(num/2);div++)
{
a=num%div;
if(a!=0)
{
continue;
}
else
{
printf("%d \n",num);
break;
}
}
}
printf("enter any digit to exit");
scanf("%d",&exi);
printf("you entered the %d,thus good bye",exi);
}
当我点击&#34;是&#34;按钮它给我以下输出:
this program find out the prime numbers
now enter the number until you want to find prime numbers here:- 20
4
6
8
9
10
12
14
15
16
18
20
enter any digit to exit7
you entered the 7,thus good bye
这不是我想要的输出,但Eclipse并没有告诉我程序中的错误是什么,以便我可以修复它。另外,您能否告诉我我的代码有什么问题?
答案 0 :(得分:0)
Eclipse可以不告诉您程序不起作用。它只能告诉您代码是否无法编译成程序。
你的代码可以编译,所以eclipse不会给出任何错误。
但是你的程序不起作用,因为它不打印质数。
让我们来看看你的内循环:
for(div=2;div<=(num/2);div++) // Here you want to test if num can be divided
// by 2 or 3 or 4 or .....
// That is fine
{
a=num%div; // So here you do the check, i.e. you calculate
// the reminder
if(a!=0)
{
// Reminder is non-zero. That will happen for e.g. 5%2 (which is 1)
// So you continue the loop if num is a prime candidate
continue;
}
else
{
// Reminder is zero. That will happen for e.g. 4%2
// So you print the numbers that are NOT primes and stop the loop
printf("%d \n",num);
break;
}
}
所以最后,你的程序与你想要的完全相反。它打印所有非素数并忽略素数。
所以切换到处都是,在检查完所有值之前不要打印!因此 - 在内循环中使用一个标志并在外循环中打印。
类似的东西:
#include <stdio.h>
int main()
{
int a,b,num,div,exi;
printf("this program find out the prime numbers\nnow enter the number until you want to find prime numbers here:- ");
scanf("%d",&b);
for(num=2;num<=b;num++) // Start from 2
{
int flag = 1; // Assume prime
for(div=2;div<=(num/2);div++)
{
a=num%div;
if(a==0)
{
flag = 0; // No - not a prime
break;
}
}
if (flag) // Was it a prime?
{
printf("%d \n",num); // Yes
}
}
printf("enter any digit to exit");
scanf("%d",&exi);
printf("you entered the %d,thus good bye",exi);
}
注意:我试图将此答案中的代码保留为与问题中的代码类似。但是,代码可以通过多种方式提高性能。只需在SO上搜索“prime”,你就会找到更优化的解决方案。