如何编程:要求从键盘上输入整数m和k,输出大于且紧靠m的k个素数。

如题所述

第一,你是素数,输出素数意味着你得从2,3…开始一个个推。

第二,大于m的k个,那么就是当算得的某个素数发现大于m了,就开始一个个往外输出,输出k个

第三,特殊情况处理,如输入k可不可以小于0,m小于0怎么办,可不可以等于0。

第四,少许的算法优化。

我用python举个例子,你说你要什么语言的我在试着谢谢。关键理清逻辑。

class PrimeFactory():

    prime_list = [3]

    def produce(self):
        yield 2
        i = 5
        yield 3
        while True:
            limit = int(pow(3,1/2))
            for prime in self.prime_list:
                if prime > limit:
                    self.prime_list.append(i)
                    yield i
                    break
                elif i % prime == 0:
                    break
            i += 2

if __name__ == '__main__':
    k = input()
    k = int(k)
    m = input()
    m = int(m)
    print ("k=%s,m=%s"%(k,m))
    if m < 0:
        raise Exception('Variable m must not be less than 0.')
    prime_factory = PrimeFactory()
    for p in prime_factory.produce():
        if p > k:
            if m <= 0:
                break
            else:
                print(p)
            m -= 1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-02
本回答被提问者采纳
第2个回答  2011-05-02
#include <stdio.h>
#include<math.h>
void main()
{int m,k,i,n=0;
scanf("%d%d",&m,&k);
while (n<k)
{
for(i=2;i<=sqrt(m);i++)
if(m%i==0)
break;
if (i>sqrt(m))
{ printf("%d\t",m);
n++;}
m++;
}
}
输入2 5,显示 2 3 5 7 11
输入9 4,显示11 13 17 19
你可以试试,我认为可以满足你的要求...追问

写一程序,其功能是:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。输出结果。

写一程序,其功能是:输入m的值(2<=m<=9),在m行m列的二维数组中存放如下所示的数据,将结果输出在显示上。

追答

#include
void main()
{int a[10],i,s=0,t=0,temp,min,max;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
min=max=a[0];
for(i=1;i<10;i++)
{if(max<a[i])
{max=a[i];t=i;}
else
{min=a[i];s=j;}
}
temp=a[0];a[0]=a[t];a[t]=temp;
t=a[9];a[9]=a[s];a[s]=temp;
}
没运行过,应该是正确的...
第二个不清楚,看不完题目...

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网