第1个回答 2013-01-14
详细分析如下,不懂可以追问
这个地方的处理逻辑有问题,这里是判断flag等于1就打印i的值,可是你i的值用什么来保存?也就是说,根据上面的循环判断的时候,i会一直自增到b,那么如果b是素数的话,flag的值就为1,如果不是素数的话,flag的值等于0 了。所以说,你输入的b的值如果不是素数,程序根本就不会进下面的if一句了。
建议定义一个数组b,将当i为素数时的值保存到b数组中去,再定义一个变量count1将保存素数的个数,然后通过循环将素数打印出来,循环的条件是i<count1。这样就不会有问题了。
奥,对了,还有一个问题,你那个第二层循环为什么是n<i/2? 这样会有一个问题,假设到i=10时,你这里只能判断i不能被小于的数整除,不能保持i十分能被6整除呢?
if (flag==1){
printf("(%d)",i);
count++;
if (count%5==0);
printf("\n");
return 0;
}
第2个回答 2013-11-22
#include<stdio.h>
#include<math.h>
int main()
{ // <-- { 前移至此
int newfunction(); // <-- 末尾加个分号
int x,i;
double k;
scanf("%d",&x);
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0) break;
if(i>k)
printf("%d 是素数\n",x);
else
printf("%d 不是素数\n",x);
return 1;
}
int newfunction()
{
int a;
printf("input a number");
scanf("%d",&a);
newfunction(a);
}
第3个回答 推荐于2018-02-12
#include<stdio.h>
#include<math.h>
int newfunction2(int x);//用来判断的函数
int newfunction();//用来输入的函数
int
main ()
{
newfunction ();//调用了输入函数
return 0;
}
int
newfunction ()
{
int a;
printf ("input a number\n");
scanf ("%d", &a);
return newfunction2(a);//调用了判断函数
}
int
newfunction2 (int x)
{
int i, k;
k = sqrt (x);
for (i = 2; i <= k; i++)
if (x % i == 0)
break;
if (i > k)
printf ("%d 是素数\n", x);
else
printf ("%d 不是素数\n", x);
return 1;
}本回答被提问者和网友采纳
第4个回答 2013-11-22
是否想在newfunction中判断是否素数?
下面是代码:
#include<stdio.h>
#include<math.h>
void newfunction(int a)
{ int k,i;
k=sqrt(a);
for(i=2;i<=k;i++)
if(a%i==0) break;
if(i>k)
printf("%d 是素数\n",a);
else
printf("%d 不是素数\n",a);
return;
}
int main()
{
int a;
printf("input a number:");
scanf("%d",&a);
newfunction(a);
exit(0);
}