用pascal编写程序 求1000内的素数(素数就是只能被1和它自己本身整除,素数比如:2、3、5、7……)

作者&投稿:镡湛 (若有异议请与网页底部的电邮联系)
c语言求1000以内的素数(素数是只能被1和它本身整除的数)~

#include
bool judge(int n) //判断是否是素数的函数
{
for(int i = 2;i <= n / 2;i++)
if(n % i == 0) return 0; //可以被某个数整除,不是素数返回0
return 1; //是素数返回1
}
int main()
{
for(int k = 2; k < 1000; k++)
if(judge(k)) printf("%4d",k); //是就输出
return 0;
}

同学你的题目明显有问题哦。。。按照题目给出的质数定义来的话1也算质数了。。。我不想吐槽出题人的智商了。度娘给出的定义:“质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。”而且后面题目自相矛盾了。。“要求写一个截选出质数表序列(从1到N,包括1和N)中的一部分质数”,后面输出要求又说“如果……,则输出1到N的所有质数,包括1和N”。。所以单纯从数学上来说该题目有严重问题。

正确题目的正确解和你的错误题目的题解都在下面。↓_↓看下去不要停

你先看第三组。。1不是质数。这组应为2 3 5 7 11 13 17。因为这个错误导致整个样例输出在数学上都是错的。看21 2这一组,N=21时从1-21的质数一共有8个,2、3、5、7、11、13、17、19,取序列的中部应该是能取出偶数个数来的,应该是取C*2个也就是4个 5 7 11 13。这样的话第二组一共7个,取的应该是5 7 11。
所以正确的样例输出应该是这样的:
21 2:5 7 11 13
18 2:5 7 11
18 18:2 3 5 7 11 13 17
100 7:17 19 23 29 31 37 41 43 47 53 59 61 67

这样比较基础的符合客观事实的一个解如下供参考:
var
n,c,i,j,a,b:integer;
p:array[1..1000]of integer;
begin
fillchar(p,sizeof(p),0); {初始化数组p}
readln(n,c);
a:=0;
for i:=2 to n do
begin
b:=0;
for j:=2 to trunc(sqrt(i)) do
if i mod j=0 then begin b:=1;break;end;
if b=0 then begin a:=a+1;p[a]:=i;end;
end; {找素数}
write(n,' ',c,':');
if c*2-1>=a then for i:=1 to a do write(p[i],' ') {要求输出的个数超过实际质数表中长度,则输
出1到N的所有质数###不包括1###}
else begin
b:=a div 2;
if a mod 2=0 then for i:=b-c+1 to b+c do write(p[i],' ')
else for i:=b-c+2 to b+c do write(p[i],' '); {输出数据处理}
end;
writeln;
end.

考虑到其他特殊需求给你一个按照你的错误题目和样例的解吧。。。
var
n,c,i,j,a,b:integer;
p:array[1..1000]of integer;
begin
fillchar(p,sizeof(p),0); {初始化数组p}
readln(n,c);
a:=1; p[1]:=1; {←←←←←←←←←←←仅有的与正确解不同的改动,其他内容相同}
for i:=2 to n do
begin
b:=0;
for j:=2 to trunc(sqrt(i)) do
if i mod j=0 then begin b:=1;break;end;
if b=0 then begin a:=a+1;p[a]:=i;end;
end; {找素数}
write(n,' ',c,':');
if c*2-1>=a then for i:=1 to a do write(p[i],' ') {要求超过实际长度,则输出1到N的所有质数###这里包括1###}
else begin
b:=a div 2;
if a mod 2=0 then for i:=b-c+1 to b+c do write(p[i],' ')
else for i:=b-c+2 to b+c do write(p[i],' '); {输出数据处理}
end;
writeln;
end.

OK就这些

以下是求n以内的素数的程序。只要输入n的值,就能求出n以内所有的素数。

var n,i,s:integer; yes:boolean;

begin

  write('N='); readln(n); s:=0;

  for n:=2 to n do

  begin

    yes:=true; {先假定n是素数}

    for i:=2 to trunc(sqrt(n)) do

      if n mod i=0 then begin yes:=false; break; end;

    if yes then

    begin

      inc(s); write(n:5); {计数,输出}

      if s mod 10=0 then writeln; {控制每行输出10个数}

    end;

  end;

  writeln;

  writeln('Total=',s);

end.




如何用Pascal语言进行声音编程
例:用于上过程编写一个警报程序:PROGRAM Alert;USES Crt;VAR Hz : Word;Count : Word;BEGIN REPEAT Count:=Count+1;Hz := 262;WHILE Hz <= 524 DO BEGIN Sound(Hz);Delay(2);Hz := Hz + 1;END;UNTIL Count = 10;Nosound;END.注意,在不同的机器上发出的声音有所差异。这是因为...

用pascal编写程序 编程就今年已过去的天数,和今天剩余的天数。_百度...
{输入今天的日期,输出今年已过去的天数,和今年剩余的天数。} var y,m,d,s,s1:integer;begin write('y m d:'); read(y,m,d);s:=d-1;for m:=1 to m-1 do case m of 1,3,5,7,8,10,12:inc(s,31);4,6,9,11:inc(s,30);2:if (y mod 4=0)and(y mod 100>0)or(...

请用pascal语言编写程序7、乘法计算器:编程由键盘输入两个整数a和b...
var a,b:longint;begin readln(a,b);writeln(a*b);end.

pasical程序基本语句
二、Pascal语言程序的基本结构 任何程序设计语言都有一定的规则。使用Pascal语言必须遵循其本身所规定的规则来编写程序。尽管不同版本的Pascal语言所采用的符号的数量、形式不尽相同,但其基本成分一般都符合标准Pascal的规定。下面我们首先来了解Pascal语言的程序基本结构。 为了明显起见,先举一个最简单的Pascal程序例子: ...

用pascal编写程序 编一程序计算两个日期之间的天数。
var   y,m,y0,m0,ans,d,d0:longint;begin   readln(y,m,d);  readln(y0,m0,d0);  repeat     d:=d+1;ans:=ans+1;    case m of     1,3,5,7,...

PASCAL语言的编程
var i,j,n:extended;begin readln(n);if (n<=1) then begin writeln(n*1.5:0:10);end;if n>1 then begin i:=n-1;writeln(i*0.8+1.5:0:10);end;end.2楼的太麻烦 我的这更很简洁 而且答案精确到分 你只要输入公斤数 就会输出要多少钱 ...

编写pascal程序 用循环结构时, 如何跳出这个程序,要什么语句?
如果是 跳出 当前的循环 则用过程: break 如果是 在 函数或过程里面用的话 用 过程:exit 可以跳出 函数和过程 如果 想直接退出程序 则用 过程:halt 以上所说的 过程可以直接使用 例如 for i:=1 to n d for j:=i+1 to n do begin if {语句} then break;a[i]:=a[j...

pascal 语言 输入hello 输出olleh 如何编写程序
var s:string; i:integer;begin readln(s);for i:=length(s) downto 1 do write(s[i]);writeln;end.

用pascal编写的快速排序的完整程序,(不要过程的)
擦,快排原理先搞清楚咯 var a:array [1..10000] of longint;n,i:longint;procedure qsort(l,r:longint); { 对 a 数组的第 l 至第 r 位置段的元素排序 } var i,j,x,t:longint;begin i:=l; { i 自最左起 } j:=r; { j 自最右起 } x:=a[(l+r) div 2]; ...

求pascal程序编写 可以追分
使用直到循环(REPEAT-UNTIL),代码如下:var I:integer;s:real;begin I:=0;s:=1;Repeat I:=I+1;s:=s*I;Until I=51;Writeln(s);End.

沧源佤族自治县19431559398: 编程求1000!后面有多少个零(Pascal语言) -
戴保乐知: var a:array[1..3000]of integer; c,n,i,j,f:integer; begin n:=1000; fillchar(a,sizeof(a),0); a[3000]:=1; f:=0; for i:=2 to n do for j:=3000 downto 1 do begin a[j]:=a[j]*i+f; f:=a[j] div 10; a[j]:=a[j] mod 10; end; i:=3000;j:=0; while a[i]=0 do begin dec(i); inc(j); end; ...

沧源佤族自治县19431559398: 用pascal编写程序 求1000内的素数(素数就是只能被1和它自己本身整除,素数比如:2、3、5、7……) -
戴保乐知: 以下是求n以内的素数的程序.只要输入n的值,就能求出n以内所有的素数.var n,i,s:integer; yes:boolean; begin write('N='); readln(n); s:=0; for n:=2 to n do begin yes:=true; {先假定n是素数} for i:=2 to trunc(sqrt(n)) do if n mod i=0 then begin yes:...

沧源佤族自治县19431559398: pascal语言 编写程序求1*2*3*...*n>1000的第一个n值 用while循环和repeat循环编写
戴保乐知: 1、while循环语句的 var ans,t:integer; begin ans:=0; t:=0; while ans&lt;=1000 do begin t:=t+1; ans:=ans*t; end; writeln(t); end. 1、repeat循环语句的 var ans,t:integer; begin ans:=1; t:=1; repeat t:=t+1; ans:=ans*t; until ans&gt;1000; writeln(t); end.

沧源佤族自治县19431559398: 用Pascal语言求出1——1000以内的孪生素数!!!! -
戴保乐知: 思路:1.定义一个“函数prime”,判断该数是否是素数;2.主程序: 1)输出(2,3) 2)从3~999的所有奇数循环; 3)如果这个数是素数,则判断这个数+2是不是素数,如果是,则输出(这个数,这个数+2).程序LZ可以自己试试看.这个定...

沧源佤族自治县19431559398: 怎么用pascal语言求1 - 1000的素数? -
戴保乐知: program prime1600(input,output);const maxlen=40;var primes :array[1..maxlen] of integer;i,j,n,c:integer;beginn:=2;write(2,',',3);primes[1]:=2;primes[2]:=3; {初...

沧源佤族自治县19431559398: 关于pascal编程: 求2至1000中的完数.完数是指此数的所有因子之和等于此数,如:28=1+2+4+7+14.程序如下 -
戴保乐知: for n:=1 to j-1 do 如果这个 n = J 的时候, 就把这个数的本身(本身也是因子)也加入进去了.28 * 2 = 1+2+4+7+14+28 要么你就在循环的时候 少循环一次 要么你就*2

沧源佤族自治县19431559398: pascal编程求出所有不超过1000的数中,含有数字3的自然数,并统计总数 -
戴保乐知: var a,b,i:integer; begin a:=0; i:=1; while i<=1000 do begin b:=i; while b>0 do if (b mod 10)=3 then begin a:=a+1; b:=0; end else b:=b div 10; i:=i+1; end; writeln(a); end.

沧源佤族自治县19431559398: 用筛选法求n以内所有的素数(pascal)用子程序编写
戴保乐知: const maxn=1000; var i,j:longint; prime:array[1..maxn] of boolean; procedure init; begin assign(output,'primenumber1.out'); rewrite(output); end; procedure outit; begin close(output); end; procedure work; begin fillchar(prime,sizeof(prime),true); for i:=2...

沧源佤族自治县19431559398: 编写程序找出1000以内的完全数(c++) -
戴保乐知: #include <stdio.h> bool isPerfect(int n) { int sum = 1; for(int i=2; i*i<=n; i++) { if(n%i==0) sum += i + n/i; } if (sum == n) return true; return false; } int main() {int i, count; count = 0;for(i=1; i<=1000; i++) { if (isPerfect(i)) { count ++; printf("%d ",i);} } ...

沧源佤族自治县19431559398: 怎样用pascal编程将1 - 1000之间(含1000)所有能被7整除的数累加并输出结果. -
戴保乐知: 这个很简单 var i,k:longint; begin k:=0; for i:=1 to 1000 do{搜索1-1000中的每个数} if i mod 7=0 then k:=k+i;{判断是否被7整除(余数是否等于0)并累加} writeln(k);{输出} end.

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