素数二分法Word文件下载.docx
- 文档编号:17990625
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:20
- 大小:18.42KB
素数二分法Word文件下载.docx
《素数二分法Word文件下载.docx》由会员分享,可在线阅读,更多相关《素数二分法Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
main()
clrscr();
printf("
%d\n"
fun(100));
答案:
1).n<
10或10>
n
2).high%j==0或!
(high%j)
3).returnsum或return(sum)
第119题(10.0分)题号:
466
用二分法求方程2X^3+4X^2+3X-6=0在(-10,10)之间的根
其中X^n代表X的n次方。
#include<
main()
{
floatx0,x1,x2,fx0,fx1,fx2;
do
Enterx1&
x2:
"
);
scanf("
%f,%f"
&
x1,&
x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
/***********SPACE***********/
}while(fx1*fx2【?
】);
x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if(fx0*fx1【?
】)
x2=x0;
fx2=fx0;
else
x1=x0;
fx1=fx0;
while(【?
】>
=1e-5);
x=%6.2f\n"
x0);
1).>
2).<
3).fabs(fx0)
第118题(10.0分)题号:
458
用等分法在有序的循环数组中,找到最小元素的位置。
intcyclic_min(intx[],intn)
intleft=0;
intright=n-1;
intmid;
while(【?
mid=(left+right)/2;
if(x[mid]<
x[right])
returnleft;
voidmain(void)
intx[]={20,23,28,35,39,40,42,8,10,15,17,19};
intn=sizeof(x)/sizeof(int);
intloc,i;
\nFindCyclicMinimum"
\n==================="
\n\nGivenArraySortedinCyclicFashion:
\n"
for(i=0;
i<
n;
i++)
%3d"
x[i]);
loc=cyclic_min(x,n);
\n\nMinimumislocatedatx[%d]=%d"
loc,x[loc]);
1).left<
right或right>
left
2).right=mid
3).left=mid+1或left=1+mid
第107题(10.0分)题号:
29
下面函数为二分法查找key值。
数组中元素已递增排序,
若找到key则返回对应的下标,否则返回-1。
fun(inta[],intn,intkey)
intlow,high,mid;
low=0;
high=n-1;
mid=(low+high)/2;
if(key<
a[mid])
elseif(key>
else
return-1;
inta[10]={1,2,3,4,5,6,7,8,9,10};
intb,c;
b=4;
c=fun(a,10,b);
if(c==1)
notfound"
position%d\n"
c);
1).low<
=high或high>
=low
2).high=mid-1
3).low=mid+1
4).returnmid或return(mid)
━━━━━━━━━━━━━━━━━━
一、程序改错共137题(共计1370分)
第61题(10.0分)题号:
355
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
------------------------------------------------------*/
#include<
intfun(intm)
/**********FOUND**********/
inti;
k;
for(i=m+1;
;
i++)
for(k=2;
k<
i;
k++)
if(i%k!
=0)
if(k=i)
return(i);
intn;
clrscr();
\nPleaseentern:
%d"
n);
fun(n));
getch();
1).inti,k;
或inti;
intk;
或intk,i;
或intk;
2).if(i%k==0)或if(!
(i%k))
3).if(k==i)或if(i==k)
第68题(10.0分)题号:
26
找出大于m的最小素数,并将其作为函数值返回。
intfun(intm)
inti,k;
for(k=1;
=0)break;
if(k<
i)
returnk;
1).for(k=2;
k++)或for(k=2;
i>
=i-1;
i/2;
i/2>
=sqrt(i);
sqrt(i)>
=k;
2).if(i%k==0)break;
或if(!
(i%k))break;
3).if(i<
=k)或if(k>
=i)或if(k==i)或if(k>
=i/2)或if(k=i/2)或if(k>
sqrt(i))
4).returni;
或return(i);
第85题(10.0分)题号:
374
读入一个整数k(2≤k≤10000),打印它的所有质因子(即
所有为素数的因子)。
例如:
若输入整数:
2310,则应输出:
2、3、5、7、11。
请改正程序中的语法错误,使程序能得出正确的结果。
#include"
conio.h"
stdio.h"
/**********FOUND**********/
IsPrime(integern)
inti,m;
m=1;
for(i=2;
i++)
if(n%i)
m=0;
return(n);
}
main()
intj,k;
printf("
\nPleaseenteranintegernumberbetween2and10000:
"
);
scanf("
&
k);
\n\nTheprimefactor(s)of%dis(are):
k);
for(j=2;
j<
=k;
if((!
(k%j))&
(IsPrime(j)))printf("
\n%4d"
j);
1).IsPrime(intn)
2).if(!
(n%i))
3).return(m);
第88题(10.0分)题号:
424
一个偶数总能表示为两个素数之和。
inta,b,c,d;
a);
for(b=3;
b<
=a/2;
b+=2)
for(c=2;
c<
=sqrt(b);
c++)
if(b%c==0)
if(c>
sqrt(b))
d=a+b;
=sqrt(d);
if(d%c=0)
sqrt(d))
%d=%d+%d\n"
a,b,d);
1).scanf("
a);
2).d=a-b;
3).if(d%c==0)
11
判断m是否为素数,若是返回1,否则返回0。
intm,k=0;
for(m=1;
m<
100;
m++)
if(fun(m)==1)
%4d"
m);
k++;
if(k%5==0)printf("
voidfun(intn)
inti,k=1;
if(m<
=1)k=0;
for(i=1;
i<
m;
if(m%i=0)k=0;
returnm;
1).intfun(intm)或fun(intm)
2).for(i=2;
i++)或for(i=2;
m>
=m-1;
m-1=>
3).if(m%i==0)k=0;
4).returnk;
一、程序设计共116题(共计1160分)
第48题(10.0分)题号:
/*------------------------------------------------
【程序设计】
--------------------------------------------------
求小于lim的所有素数并放在aa数组中,该函数返回
所求出素数的个数。
------------------------------------------------*/
#defineMAX100
intfun(intlim,intaa[MAX])
/**********Program**********/
/**********End**********/
intlimit,i,sum;
intaa[MAX];
PleaseInputaInteger:
limit);
sum=fun(limit,aa);
for(i=0;
sum;
i++){
if(i%10==0&
i!
=0)printf("
%5d"
aa[i]);
----------------------
intn=0;
inti,j;
for(i=2;
=lim;
{for(j=2;
j<
j++)
if(i%j==0)break;
if(j==i)aa[n++]=i;
returnn;
第55题(10.0分)题号:
23
从键盘输入一个大于3的整数,调用函数fun判断
其是否素数,然后在main函数中输出相应的结论
信息。
7是素数,8不是素数。
请编写fun函数。
素数是
仅能被1和自身整除的数
-------------------------------------------------*/
intm,flag;
inputaninteger:
m);
flag=fun(m);
if(flag)
%disaprime.\n"
%disnotaprime.\n"
intfun(intn)
inti;
intj;
j=1;
for(i=2;
n;
{if(n%i==0)j=0;
returnj;
第58题(10.0分)题号:
357
求大于lim(lim小于100的整数)并且小于100的所
有素数并放在aa数组中,该函数返回所求出素数的
个数。
for(i=lim;
=100;
320
判断m是否为素数。
for(m=100;
200;
if(fun(m))
k++;
if(k%5==0)
k=%d\n"
k);
----------------------
inti,k=1;
if(m%i==0)k=0;
第73题(10.0分)题号:
332
找出一个大于给定整数且紧随这个整数的素数,并
作为函数值返回。
---------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 素数 二分法
![提示](https://static.bdocx.com/images/bang_tan.gif)