求大神看看这个C语言程序哪里出错了,为什么得不到正确结果

求出大于M且紧靠M的N个素数并存入数组中,然后输出,M和N的值从键盘输入。

你的程序貌似没有什么问题,


#include <stdio.h>

#include <stdlib.h>

int main()

{

    int N,M,a[10],num=0,i,j;

    printf("请输入M的值:");

    scanf("%d",&M);

     printf("请输入N的值:");

    scanf("%d",&N);

    for(i=M+1;;i++){

        for(j=2;j<=sqrt(i);j++)

            if(i%j==0)

            break;

        if(j>sqrt(i)){

            a[num]=i;

            num++;

        }

        if(num==N){

            break;

        }

    }

    for(int i=0;i<N;i++){

        printf("a[%d]=%d\n",i,a[i]);

    }

    return 0;

}

上面是结果下面是程序,你看看有什么不同的地方

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-25
#include<stdio.h>
#include<math.h>
int main()
{
int M,N,n,i,j,k=0,a[10],num = 0;
printf("input M\n");
scanf("%d",&M);
printf("input N\n");
scanf("%d",&N);
for(i = M+1;;i++)
{
int b = (int)sqrt((double)i);
for(j=2;j<=(int)sqrt((double)i);j++)
if(0 == (i%j))
break;
if(j>(int)sqrt((double)i))
{
a[k]=i;
k++;
num++;
}
if(num==N)
break;

}
for(n=0;n<k;n++)
printf("%d\n",a[n]);
}

有两个错误:
1。sqrt函数要包含math.h文件,再调用sqrt函数,而不是int sqrt()然后调用;
2。if(i%j)判断能否整除错了。
第2个回答  2013-04-25
#include <math.h>
素数求法:
for(i=M+1;;i++){
int z=1;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
int z=0; //表示 i 能整除j时,z=0表示它不是素数
break;
}
}
if(z==1){
a[k]=i;
num++;
k++;
}
if(num==N)
break;
}
第3个回答  2013-04-25
sqrt() 是系统函数,在math.h头文件中定义,但是你这里自己把它声明成了int类型,而且声明之后没有对其定义,所以,对这个函数操作的结果也是未知的
第4个回答  2013-04-25
貌似少了一个.h文件。你用的sprt()这个函数在哪定义的?是不是要加一个“math.h”
第5个回答  2013-04-25
你的那个sqrt()是在哪实现的呢?

C语言开关灯问题,麻烦大神们帮我看看这个程序哪里错了啊,结果不对...
两个错误:1、int a[6000]={1};这句。你这只是将a[0]赋值1,其他都是0,数组默认以0填充,应该改为:int a[6000];for(i=0;i<6000;i++)a[i]=1;2、第二层循环里:if(a[j]==0)a[j]=1;if(a[j]==1)a[j]=0;这个语句把所有的灯都关闭了,因为如果关了,就打开;打开后又...

...遇到问题求大神指教:哪里错了,如何改正,为什么会出现这种情况?_百度...
所以你那样写,第一次循环输入2回车,不会进入下一次循环,而是等待再次输入,然后你输入3的时候2被存储在元素1中,进入下一个循环,已经有3了还要等待输入,于是你输入4,实际保存的是3,所以后面都错位了,结果就是最后一个输入没有被保存。另外所有i循环都从0开始,包括冒泡排序。修改如下:include<...

大神帮我看一下这个c语言程序哪里错了可以运行但是无法显示输出结果多 ...
在我这是可以的 输出了YES 和NO 唯一和你的不同是我在if判断的时候加了类型转换 你试一下看行不行 if((char)psw[i] >= 'A' && (char)psw[i] <= 'Z')f1 = 1;if((char)psw[i] >= 'a' && (char)psw[i] <= 'z')f2 = 1;if((int)psw[i] >= '0' && (int)psw...

求大神看我编的这个C语言程序为什么运行得不到预期的结果(加密...
没有什么错误 if((argv[2][0]=='D')||(argv[2][0]=='d')) 这是表示要解扰 ,不然你这就变成了if(1)了

c语言大神帮我看看,为什么结果输出不对,输入27638496,要求结果64862
你的主函数main 里的输入输出语句的标示符%1d写错了,应该是%ld(小写的LD)而不是%1d(数字1小写D),把main函数中的scanf("%1d",&n);改成scanf("%ld",&n); 把printf("\\nThe result is:%1d\\n",get_even(n));改成printf("\\nThe result is:%ld\\n",get_even(n));就没有问题了.

C语言switch语句 大神看看哪里出了问题 为什么我求出来的利息与本金的...
小错误!你漏了给s赋值了。s当然就为乱码了。s应在switch语句前赋值,如下:s=(long)b*(1+((float)year*年利率))注意b和year都为整型,在×利率前必须转化为浮点数型,否则因为year数值太小,精度会非常低,算出结果很不准。或者写为:s=(long)b*(1.0+年利率×year))其实更好的办法应该设...

c语言程序为什么会出现警告且不显示输出结果 怎么解决啊。。。求...
看不清楚你的报错,可能有如下情况的其中一种:你的主函数是int型,需要在函数末尾有一个返回值,一般添加return 0;另一种情况是你的编译器是VS的,对于scanf函数VS认为是不安全的,可能存在溢出的情况,所以会有警示提醒。

C语言 大神帮我看下我的程序可以运行 看怎么不出结果
看不出结果是因为你的 printf 函数没有写上占位符 应该改成:printf("mian ji shi %d \\n",area);这样子就可以看到控制台上面输出面积了;

我是c语言小白,问问大神帮我看看编写的简单程序这哪里出错了?
#include<stdio.h> 输入代码时忽视输入法隐藏的错误 表面上看都是一样的代码,但是第二行就有错误,是全角和半角的不同,再看:正确编译运行 所以你的代码没有任何问题,但是要注意代码输入的方法。以前回答了很多,有时间可以看看我最近回答c语言问题:网页链接 网页链接 网页链接 网页链接等等。

...int",求大神帮我看下这个c语言程序的错误出在哪里
语法错了,函数参数格式不正确,作为函数参数的二维数组格式要写成a[][],或者把[]中维数补全,不能用变量做数组维数。

相似回答