主题:编程就+分(2期)!
			 Lovely哆啦
				 [专家分:1360]  发布于 2007-07-21 18:21:00
 Lovely哆啦
				 [专家分:1360]  发布于 2007-07-21 18:21:00							
			素数环
问题描述:
把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。
						
					 
		
			
回复列表 (共5个回复)
		
								
				沙发
				
					 Matodied [专家分:7560]  发布于 2007-07-22 20:50:00
Matodied [专家分:7560]  发布于 2007-07-22 20:50:00				
				就是递归问题。每个位置依次取不同的值,要求:
(1)不能有相同的。
(2)每个数和前面的那个数的和是素数,记住!取到最后一个元素时要把最后一个元素和第1个元素也检查一下。
							 
						
				板凳
				
					 Matodied [专家分:7560]  发布于 2007-07-22 20:59:00
Matodied [专家分:7560]  发布于 2007-07-22 20:59:00				
				程序:(n必须是偶数)
TYPE arr = ARRAY[1..64] OF INTEGER;
VAR
   a: arr; n: INTEGER;
PROCEDURE pri;
VAR
   i: INTEGER;
BEGIN
    FOR i:=1 TO n DO WRITE(a[i], ' ');
    HALT;
END;
FUNCTION isprime(m: INTEGER): BOOLEAN;
VAR
   i: INTEGER; f: BOOLEAN;
BEGIN
    f := TRUE;
    FOR i:=2 TO TRUNC(SQRT(m)) DO BEGIN
        IF m MOD i = 0 THEN f := FALSE;
    END;
    isprime := f;
END;
PROCEDURE try(i: INTEGER);
VAR
   j, k: INTEGER; f: BOOLEAN;
BEGIN
    FOR j:=1 TO n DO BEGIN
        a[i] := j; f := TRUE;
        FOR k:=1 TO i - 1 DO BEGIN
            IF a[i] = a[k] THEN f := FALSE;
        END;
        IF f THEN BEGIN
           f := isprime(a[i] + a[i - 1]);
        END;
        IF f THEN BEGIN
           IF i < n THEN BEGIN
              try(i + 1);
           END ELSE BEGIN
              IF isprime(a[i] + a[1]) THEN pri;
           END;
        END;
    END;
END;
BEGIN
    READLN(n);
    IF n MOD 2 = 0 THEN BEGIN
       try(1);
    END ELSE BEGIN
       WRITELN('Not solve.');
    END;
END.
							 
						
				3 楼
				
					 Lovely哆啦 [专家分:1360]  发布于 2007-07-23 09:35:00
Lovely哆啦 [专家分:1360]  发布于 2007-07-23 09:35:00				
				程序不对!!
							 
						
				4 楼
				
					 Matodied [专家分:7560]  发布于 2007-07-23 13:23:00
Matodied [专家分:7560]  发布于 2007-07-23 13:23:00				
				我的程序是对的.
不过我输出的不是环形,而是从第1个元素开始到最后一个元素结束的链条。
							 
						
				5 楼
				
					 Lovely哆啦 [专家分:1360]  发布于 2007-07-23 15:25:00
Lovely哆啦 [专家分:1360]  发布于 2007-07-23 15:25:00				
				[quote]你的程序是对的.
不过你输出的不是环形,而是从第1个元素开始到最后一个元素结束的链条。[/quote]
							 
									
			
我来回复