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

题目

利用穷举法编写一个算法判断给定的正整数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);
}
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列程序的功能是输入一个整数,判断是否是素数,若为素数输出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)

第2题:

设有宏定义:define IsDIV(k,n) ((k%n=1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&

设有宏定义:#define IsDIV(k,n) ((k%n=1)?1:0)且变量m已正确定义并赋值,则宏调用: IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是______。

A.判断m是否能被5或7整除

B.判断m是否能被5和7整除

C.判断m或者7整除是否余1

D.判断m被5和7整除是否都余1


正确答案:D
解析:已知表达式((k%n=l)?1:0)是判断k是否被n整除余1,如果是,则该表达式的值为1,如果不是则该表达式的值为0,代入到IsDIV(m,5)&&IsDIV(m,7)即是判断m被5和7整除是否都余1,因此,选项D是正确的。

第3题:

设有宏定义 :#define IsDIV(k,n) ((k%n==1)?1:0) 且变量 m 已正确定义并赋值 ,则宏调用 :IsDIV(m,5)&&IsDIV(m,7) 为真时所要表达的是

A) 判断 m 是否能被 5 或者 7 整除

B) 判断 m 是否能被 5 和 7 整除

C) 判断 m 被 5 或者 7 整除是否余 1

D) 判断 m 被 5 和 7 整除是否都余 1


正确答案:D

第4题:

设有宏定义:

define IsDIV(k,n)((k%1"1==1)?1:O)且变量m已正确定义并赋值,则宏调用:

IsDIV(m,5)&&;IsDIV(m,7)为真时所要表达的是( )。

A.判断m是否能被5和7整除

B.判断m被5和7整除是否都余l

C.判断m被5或者7整除是否余1

D.判断m是否能被5或者7整除


正确答案:B
本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,即m都能被5和7整除都余1,所以选项B正确。

第5题:

设有宏定义“#definelsDIV(k,n)((k%n==1?1:0)”且变量m已正确定义并赋值,则宏调用“lsDIV(m,5)&&IsDIV(m,7)”为真时所要表达的是( )。

A.判断m是否能被5或者7整除

B.判断m是甭能被5和7整除

C.判断m被5或者7整除是否余1

D.判断m被5和7整除是否都余l


正确答案:D
D。【解析】本题考查宏定义,宏定义IsDIV(k,n)的意思是如果k对n.求模的余数为1,其值等于1,否则其值等于0。本题中宏调用表达式是两个宏调用之间的逻辑与运算,所以选项D正确。

第6题:

设二维数组a[1..m, 1..n] 含有m*n 个整数。 ① 写一个算法判断a中所有元素是否互不相同?输出相关信息(yes/no); ② 试分析算法的时间复杂度。


参考答案:①判断二维数组中元素是否互不相同,只有逐个比较,找到一对相等的元素,就可结论为不是互不相同。如何达到每个元素同其它元素比较一次且只一次?在当前行,每个元素要同本行后面的元素比较一次(下面第一个循环控制变量p的for循环),然后同第i+1行及以后各行元素比较一次,这就是循环控制变量k和p的二层for循环。
  [算法描述]
  int JudgEqual(ing a[m][n],int m,n)
  //判断二维数组中所有元素是否互不相同,如是,返回1;否则,返回0。
  {for(i=0;i  for(j=0;j  {for(p=j+1;p  if(a[i][j]==a[i][p]) {cout<<“no”; return(0); }
  //只要有一个相同的,就结论不是互不相同
  for(k=i+1;k  for(p=0;p  if(a[i][j]==a[k][p]) { cout<<“no”; return(0); }
  }// for(j=0;j  cout<<“yes”; return(1); //元素互不相同
  }//算法JudgEqual结束
  ②二维数组中的每一个元素同其它元素都比较一次,数组中共m*n个元素,第1个元素同其它m*n-1个元素比较,第2个元素同其它m*n-2 个元素比较,……,第m*n-1个元素同最后一个元素(m*n)比较一次,所以在元素互不相等时总的比较次数为 (m*n-1)+(m*n-2)+…+2+1=(m*n)(m*n-1)/2。在有相同元素时,可能第一次比较就相同,也可能最后一次比较时相同,设在(m*n-1)个位置上均可能相同,这时的平均比较次数约为(m*n)(m*n-1)/4,总的时间复杂度是O(n4)。

第7题:

在窗体上画一个名称为Command1的命令按钮和一个名称为Text1的文本框,然后编写如下事件过程: Private Sub Command1_Click( ) n=Val(Text1.Text) For i=2 To n Forj =2 To Sqr(i) If i Mod j=0 Then Exit For Next j lf j>Sqr(i) Then Print i Next i End Sub 该事件过程的功能是

A.输出n以内的奇数

B.输出n以内的偶数

C.输出n以内的素数

D.输出n以内能被j整除的数


正确答案:C
解析:为了判断一个数n是不是素数,可以将n被2到根号2之间的所有整数除,如果都除不尽,则n就是素数,否则不是素数。本题是典型的判断素数的程序语句。

第8题:

在窗体上画一个名称为Command1的命令按钮和一个名称为Text1的文本框,然后编写如下事件过程:Private Sub Command1_Click() n = Val (Text1.Text) For i = 2 To n For j = 2 To Sqr(i) If i Mod j = 0 Then Exit For Next j If j > Sqr (i) Then Print i Next iEnd Sub 该事件过程的功能是。A.输出n以内的奇数B.输出n以内的偶数C.输出n以内的素数D.输出n以内能被j整除的数


正确答案:C
【解析】为了判断一个数n是不是素数,可以将n被2到根号2之间的所有整数除,如果都除不尽,则n就是素数,否则不是素数。本题是典型的判断素数的程序语句。故选择C项。

第9题:

素数的求法

A.小范围内判断一个数是否为质数:

function prime (n: integer): Boolean;

var I: integer;


正确答案:

 

begin
for I:=2 to trunc(sqrt(n)) do
if n mod I=0 then begin
prime:=false; exit;
end;
prime:=true;
end;

第10题:

阅读以下说明和C函数,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。

【说明1】 函数isPrime(int n)的功能是判断n是否为素数。若是,则返回1,否则返回0。素数是只能被1和自己整除的正整数。例如,最小的5个素数是2,3,5,7,11。 【C函数】 int isPrime (int n) { int k, t; if (n==2) return 1; if(n<2|| (1) ) return 0; /* 小于2的数或大于2的偶数不是素数 */ t=(int)sqrt(n)+1; for (k=3; k<t; k+=2) if ( (2) ) return 0; return 1; } 【说明2】 函数int minOne(int arr[], int k)的功能是用递归方法求指定数组中前k个元素中的最小者,并作为函数值返回。 【C函数】 int minOne (int arr[], int k) { int t; assert (k>0) ; if(k==1) return (3) ; t=minOne(arr+1, (4) ; if (arr[0]<t) return arr[0]; return (5) ; }


正确答案:
(1)n%2==0,或!(n%2),或其等价形式
(2)n%k==0,或!(n%k),或其等价形式
(3)arr[0],或*arr,或其等价形式
(4)k-1,或其等价形式
(5)t

更多相关问题