更多“编写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。”相关问题
  • 第1题:

    请编一个函数int fun(int a),它的功能是:判断a是否是素数,若a是素数,返回1;若不是素数,返回0。A的值由主函数从键盘读入。


    正确答案:
    #include”stdio.h”
    int fun(int a)
    {int I;
    if(a==2) return 1; I=2;
    while((a%I)!=0I<=sqrt((float)a))
    I++;
    if(a%I==0)
    {printf(“%d is not a prime!”,a);
    return 0; }
    printf(“%d is a prime!”,a);
    return 1; }
    main
    {int x;
    printf(“\n please enter a number:”);
    scanf(“%d”,&x);
    printf(“%d\n”,fun(x)); }

  • 第2题:

    ( 9 )某人编写如下函数来判断 a 是否为素数,若是,则函数返回 True ;否则返回 False

    Function Prime ( a As Integer ) AS Boolean

    Dim k As Interger,isprime AS Boolean

    If a<2 Then

    isprime=False

    Else

    isprime=True

    k=2

    Do While k<a/2 And isprime

    If a Mod k=0 Then

    isprime=False

    ELSE

    k=k+1

    End IF

    LOOP

    End If

    prime=isprime

    End Function

    在测试时发现有 1 个非素数也被判断为素数,这个错判的数是——


    正确答案:

  • 第3题:

    下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum输出到文件OUT66.DAT中。

    注意:部分源程序已给出。

    请勿改动主函数mam()和写函数writeDAT()的内容。

    试题程序:

    include<stdio. h>

    int cnt, sum;

    void countValue ( )

    {

    }

    void main ()

    {

    cnt= sum=0;

    countValue();

    printf ("素数的个数=%dkn", cnt );

    printf ("按要求计算得值=%d\n", sum );

    writeDAT ( );

    }

    writeDAT ( )

    {

    FILE *fp;

    fp=fopen ( "OUT66. DAT", "w" );

    fprintf (fp, "%d\n%d\n", cnt, sum);

    fclose (fp);

    }


    正确答案:void countValue ( ) { int ijhalfyy[100]; for (i=500; i800; i++) { half=i/2; for (j=2; 3=half; j++) if (i%j==0) break; /*如果该数不是素数则退出此层循环*/ if (j>=half) /*如果该数是素数则将该数存入数组yy中*/ { yy [cnt]=i; ont ++; /*统计素数的个数*/ } } for(i=0j=-1;icnt;i++) /*计算这些素数的间隔加、减之和*/ { j=i*-1; sum+=j*yy[i]; } }
    void countValue ( ) { int i,j,half,yy[100]; for (i=500; i800; i++) { half=i/2; for (j=2; 3=half; j++) if (i%j==0) break; /*如果该数不是素数,则退出此层循环*/ if (j>=half) /*如果该数是素数,则将该数存入数组yy中*/ { yy [cnt]=i; ont ++; /*统计素数的个数*/ } } for(i=0,j=-1;icnt;i++) /*计算这些素数的间隔加、减之和*/ { j=i*-1; sum+=j*yy[i]; } } 解析:本题考查的知识点如下:
    (1)利用循环和“%”进行素数的判断。
    (2)间隔加、减的实现。
    在本题中,首先要找出判断素数的方法。若一个数a依次除以从2到a/2的数所得的余数都不是0,则这个数是素数。用此方法依次判断出从500到800区间内的素数。由题意可知,第1,3,5…个素数计算加法,第2,4,6…个素数计算减法。减去1个正整数就是加上负的这个正整数,所以可以将这个正整数乘以-1进行加法。使用循环实现求和,在奇数次的循环中,每个素数乘以1,偶数次的循环中,素数乘以-1,就可实现间隔加、减。

  • 第4题:

    编写函数int fun(int lim, int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include<conio.h>

    include<stdio.h>

    define MAX 100

    int fun(int lim, int se[MAX])

    {

    }

    main()

    {

    int limit,i,sum;

    int aa[MAX];

    clrscr();

    printf("输入一个整数");

    scanf("%d",&limit);

    sum=fun(limit,aa);

    for(i=0;i<sum;i++)

    {

    if(i%10==0&&i!=0) /*每行输出10个数*/

    printf("\n");

    printf("%5d ",aa[i]);

    }

    }


    正确答案:int fun(int lim int aa[MAX]) { int ijk=0; for(i=2;i=lim;i++) /*求出小于或等于lim的全部素数*/ { for(j=2;ji;j++) if(i%j==0) break; if(j>=i) aa[k++]=i;; /*将求出的素数放入数组aa中*/ } return k; /*返回所求出的素数的个数*/ }
    int fun(int lim, int aa[MAX]) { int i,j,k=0; for(i=2;i=lim;i++) /*求出小于或等于lim的全部素数*/ { for(j=2;ji;j++) if(i%j==0) break; if(j>=i) aa[k++]=i;; /*将求出的素数放入数组aa中*/ } return k; /*返回所求出的素数的个数*/ } 解析:在做这道题时,我们只需掌握素数的基本算法就可以了,一般表示素数的方法如下:
    for (j=2;ji;j++)
    if(i%j==0) break;
    if(j>=i)

  • 第5题:

    编写程序,判断一个大于等于3的自然数是否为素数。


    正确答案:程序代码如下: CLEAR INPUT“请输入自然数(>=3):” TO n f=0 i=2 DO WHILE i=INT(SQRT(n)) IF MOD(ni)>0 i=i+1 LOOP ELSE f=1 EXIT ENDIF ENDDO IF f=0 ? STR(n3)+“是素数” ELSE ? STR(n3)+“不是素数” ENDIF RETURN
    程序代码如下: CLEAR INPUT“请输入自然数(>=3):” TO n f=0 i=2 DO WHILE i=INT(SQRT(n)) IF MOD(n,i)>0 i=i+1 LOOP ELSE f=1 EXIT ENDIF ENDDO IF f=0 ? STR(n,3)+“是素数” ELSE ? STR(n,3)+“不是素数” ENDIF RETURN

  • 第6题:

    程序test.c的功能是:将大于整数m且紧靠m的k个素数存入数组XX。请考生编写函数num(intm,intk,intxx[])实现程序的要求,最后调用函数readwriteDAT0把结果输出到0ut.dat文件中。 例如,若输入17,5,则应输出:19,23,29,31,37。


    正确答案:
    【审题关键句】将大于整数m且紧靠m的k个素数存入数组。
    【解题思路】
    ①首先定义一个计数变量cnt并赋初值为0。
    ②利用while循环统计大于整数m且紧靠m的k个素数,当计数变量cnt的值与变量k的值相等的时候,则退出while循环。每执行一次循环时,变量m的值加1,然后调用函数isP判断当前的m值是否为素数,如果是素数,则将m的值赋给数组xx[cnt],同时计算变量cnt的值加1,即当数组xx[0]中保存了一个素数之后,在T一次素数判断成立时将保存到xx[1]的位置上,依次类推。
    【参考答案】

  • 第7题:

    给定程序MODll.C中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。

    请改正函数fun中指定部位的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


    正确答案:(1)y=1; (2)d=a-i;
    (1)y=1; (2)d=a-i; 解析:本题中函数的功能是为一个偶数查找两个素数,这两个素数之和等于该偶数。其中,函数fun用形参a放偶数,指针b和c放两个素数。把一个偶数分解成1和(x-1)两个数是否是素数,再分解为3和(x-3)这两个数,判断是否是素数,依此类推,直到找出这两个素数为止。本题中把偶数分解为i和d两个素数。判断i是否是素数,如果i不是素数,则i+2再循环;如果i是素数,则d=x-i,然后判断d是否是素数。

  • 第8题:

    下列给定程序中,函数proc()的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main()函数中,若proc()返回1,则输出″YES″;若proc()返回0,则输出″NO″!

    请修改程序中的错误,使它能得出正确的结果。

    注意:不要改动main)函数,不得增行或删行,也不得,t更改程序的结构。

    试题程序:


    正确答案:

    (1)错误:k++
    正确:k++;
    (2)错误:if(m=k)
    正确:if(m==k)
    【解析】根据C语言的语法规则,每一条语句都要以分号结束,因此,要在语句“k++”之后加上分号。判断变量m与变量k是否相等应该用符号“==”,符号“=”为赋值符号,因此,“if(m=k)”应改为“if(m==k)”。

  • 第9题:

    利用穷举法编写一个算法判断给定的正整数n是否是素数的程序,即判断n是否只能被1和自身整除。


    正确答案: main( )
    {
    int m,i,k;
    scanf("%d",&m);
    k=sqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0) break;
    if(i>=k+1)
    printf("%d is a prime number/n",m);
    else
    printf("%d is not a prime number/n",m);
    }

  • 第10题:

    编写一函数reverse实现一个字符串按反序存放,要求在主函数main中输入字符串,并输出反序后的字符串。不能使用strlen库函数。      例如:输入string,则输出gnirts。


    正确答案: #include "stdio.h"
    void reverse(char str[])
    {int i,j;
    char t;
    for(j=0;str[j]!=/0;j++);/*求字符串长度*/
    for(i=0,j=j-1;i<j;i++,j--)
    {t=str[i];
    str[i]=str[j];
    str[j]=t;
    }
    }
    main()
    {char str[80];
    printf("/nPlease input a string:");
    gets(str);
    reverse(str);
    printf("/nString reverse:");
    puts(str);}

  • 第11题:

    问答题
    利用穷举法编写一个算法判断给定的正整数n是否是素数的程序,即判断n是否只能被1和自身整除。

    正确答案: main( )
    {
    int m,i,k;
    scanf("%d",&m);
    k=sqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0) break;
    if(i>=k+1)
    printf("%d is a prime number/n",m);
    else
    printf("%d is not a prime number/n",m);
    }
    解析: 暂无解析

  • 第12题:

    问答题
    编一个程序,输入一个正整数,判断它是否为素数。如不是,则输出其所有正约数。

    正确答案: Console.WriteLine("请输入一个正整数:");
    uinti,n,flag;
    boolf=true;
    n=uint.Parse(Console.ReadLine());
    //uint.TryParse(Console.ReadLine(),outn);
    for(i=2;i{
    if(n%i==0){f=false;break;}
    }
    if(f)Console.WriteLine("{0}是一个素数。",n);
    else
    {
    Console.Write("{0}不是一个素数。/n{1}=",n,n);
    i=2;
    flag=0;
    while(i<=n)
    {
    while(n%i==0)
    {
    n=n/i;
    if(flag!=0)Console.Write(’*’);
    flag=1;
    Console.Write("{0}",i);
    }
    i++;
    }
    }
    解析: 暂无解析

  • 第13题:

    以下ispeime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空。int isprime(int a){int i; for(i=2;i<=a/2;【】) if(a%i= =0) return(0); 【】;}


    正确答案:i++  或 i+=1  或 ++i 或 i=i+1
            return 1  或  return(1)
    当进行一个判断之后要让i增1,以实现对下一个数的除法。依据题意,如果是素数,要返回1.

  • 第14题:

    下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。

    main()

    {int i, x, y=1;

    scanf("%d", &x);

    for(i=2; i<=x/2; i++)

    if【14】{ y=0; break;}

    printf("%d\n", y);

    }


    正确答案:
    (x%i==0)

  • 第15题:

    ()在非对称密钥加密中非常重要。

    A、整数

    B、素数

    C、负数

    D、函数


    正确答案:B

  • 第16题:

    编写函数fun,其功能是:将所有大于1小于整数m的非素数存人XX所指数组中,非素数的个数通过k返回。

    例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。注意:部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    【考点分析】本题考查:如何判断非素数;循环判断结构;数组的引用。【解题思路】题目要求将l—m之问的非素数存人数组中,应使用循环判断结构。循环语句用来遍历1一m之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存人数组中。这道题目是考查—个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。【解题宝典】判定一个数是否为素数,即该数除了能被l和它本身外,不能被任何数整除。代码实现为:for(j=2;j<i;j++)if(i%j==0)/*如余数为0,证明i不是素数·/此语句需要熟记,很多判断素数的题目也可通过此法解决。

  • 第17题:

    请编写一个函数,函数的功能是删除字符串中的所有空格。

    例如,主函数中输入“asd af aa z67”,则输出为“asdafaaz67”。

    注意:部分源程序在文件PROGl.C中。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。


    正确答案:
    解析:该程序功能是删除字符串中的所有空格。本题的解题思路是首先利用一个指向字符串的指针,查找不是空格的字符,然后将不是空格的字符赋值到字符串,如果是空格,则跳过该字符,这样就实现了空格字符的删除。

  • 第18题:

    程序test.c的功能是:计算500~800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,计算其间隔减、加之和,即第1个素数.第2个素数+第3个素数.第4个素数+第5个素数…的值sum。请编写函数count Value实现程序的要求,最后main函数调用函数writeOAT把结果cnt和Sum,输出到文件out.dat中。


    正确答案:
    【审题关键句】计算500~800区间内素数的个数,素数的值从大到小排序,再计算其间隔减、加之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值。
    【解题思路】
    ①首先定义一个循环变量循环i和用于正负号转换的变量j,同时赋i的初值为-1。
    ②通过for循环对800到500的每个数字进行逐个的扫描,指定循环变量i的初值为800,当i值等于500停止循环,每执行一次循环,i的值便减1。(注意,本题for循环从大到小依次读取数据是根据题目要求设计的,这样得到的素数值其排序方式就是从大到小排序。)
    ③在每次执行for循环时,都调用素数判断函数isPrime判断当前的i值是否为素数,如果是素数,则素数计数变量cnt值加1,正负号转换变量j的值乘以-1,实现正负数的交替转换,最后将每次循环得到的i*j的值累加到求和变量 sum中。
    【参考答案】

  • 第19题:

    程序test.c的功能是:计算100以内满足以下条件的所有整数i的个数cnt以及这些i之和sum。条件:i,i+4,i+10都是素数,同时i+10小于100。请考生编写函数countvalue实现程序要求,最后调用函数wfiteDAT把结果cnt和sum输出到文件out.dat中。(数值l不是素数)


    正确答案:
    【审题关键句】100以内(含l00)满足i、i+4、i+10都是素数的整数的个数以及这些i之和。
    【解题思路】
    ①首先定义循环变量i,然后将i的值赋初值为3,每循环一次则将i的值加1,直到i<90。
    ②在for循环中,每执行一次循环则调用函数isPrime(该函数具体的算法已经在源程序中给出,直接用即可),对i、 i+4、i+10是否同时是素数进行判断,如果这三个数同时为素数,则计数变量cnt值加1,同将时将变量i的值累加到sum上。
    【参考答案】

  • 第20题:

    请补充函数proc(),该函数的功能是判断一个数是否为素数。该数是素数时,函数返回字符串:“yes!”,否则函数返回字符串:“no!”,并在主函数中输出。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

    试题程序:


    正确答案:

    【l】char*proc(intn)【2】2【3】n%i==0
    【解析】由整个程序可知,【1】应为函数proc()的函数头。根据主函数中的调用可知形参的个数和类型,因此,【1】处填“char”proc(intn)”。素数为只能被1和它本身整除的整数。要判断一个整数是否为素数,要看它是否能被除1和小于它本身之外的数整除,因此,【2】处填“2”;【3】处填“n%i==0”。

  • 第21题:

    利用穷举法编写一个算法判断给定的正整数n是否是素数,即判断n是否只能被1和自身整除。


    正确答案: #include“math.h”
    #include“stdio.h”
    void main()
    {
    int m,i,k;
    scanf("%d",&m);
    ksqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0)break;
    if(i>=k+1)
    printf("%d is a prime number/n",m);
    else
    printf("%d is not a prime number/n",m);
    }

  • 第22题:

    编一个程序,输入一个正整数,判断它是否为素数。如不是,则输出其所有正约数。


    正确答案: Console.WriteLine("请输入一个正整数:");
    uinti,n,flag;
    boolf=true;
    n=uint.Parse(Console.ReadLine());
    //uint.TryParse(Console.ReadLine(),outn);
    for(i=2;i{
    if(n%i==0){f=false;break;}
    }
    if(f)Console.WriteLine("{0}是一个素数。",n);
    else
    {
    Console.Write("{0}不是一个素数。/n{1}=",n,n);
    i=2;
    flag=0;
    while(i<=n)
    {
    while(n%i==0)
    {
    n=n/i;
    if(flag!=0)Console.Write(’*’);
    flag=1;
    Console.Write("{0}",i);
    }
    i++;
    }
    }

  • 第23题:

    问答题
    利用穷举法编写一个算法判断给定的正整数n是否是素数,即判断n是否只能被1和自身整除。

    正确答案: #include“math.h”
    #include“stdio.h”
    void main()
    {
    int m,i,k;
    scanf("%d",&m);
    ksqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0)break;
    if(i>=k+1)
    printf("%d is a prime number/n",m);
    else
    printf("%d is not a prime number/n",m);
    }
    解析: 暂无解析

  • 第24题:

    问答题
    编写一函数reverse实现一个字符串按反序存放,要求在主函数main中输入字符串,并输出反序后的字符串。不能使用strlen库函数。      例如:输入string,则输出gnirts。

    正确答案: #include "stdio.h"
    void reverse(char str[])
    {int i,j;
    char t;
    for(j=0;str[j]!=/0;j++);/*求字符串长度*/
    for(i=0,j=j-1;i<j;i++,j--)
    {t=str[i];
    str[i]=str[j];
    str[j]=t;
    }
    }
    main()
    {char str[80];
    printf("/nPlease input a string:");
    gets(str);
    reverse(str);
    printf("/nString reverse:");
    puts(str);}
    解析: 暂无解析