1 条题解

  • 0
    @ 2025-2-14 21:20:42

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 200;
    int n, p[N];	//质数表 
    int m;			//输入m 
    int f[209];
    
    int main() {
    	for (int i = 2; i <= 200; i ++) {
    		bool flag = true;
    		for (int j = 2; j * j <= i; j ++) {
    			if (i % j == 0) {
    				flag = false;
    				break;
    			}
    		}
    		if (flag) p[++ n] = i;
    	}
    
    	while (cin >> m) {
    		memset(f, 0, sizeof(f));
    		f[0] = 1;
    		for (int i = 1; i <= n; i ++) {
    			for (int j = p[i]; j <= m; j ++) {
    				f[j] += f[j - p[i]];
    			}
    		}
    		cout << f[m] << endl;		
    	}
    
    	return 0;
    }
    
    

    Pascal :

    var
      n,i,j:longint;
      zhishu:boolean;
      f:array[0..200]of longint;
    begin
      read(n);
      f[0]:=1;
      for i:=2 to n do
    	begin
        zhishu:=true;
        for j:=2 to trunc(sqrt(i)) do
    		  if i mod j =0 then zhishu:=false;
        if zhishu then for j:=i to n do f[j]:=f[j]+f[j-i];
      end;
      write(f[n]);
    end.
    
    • 1

    信息

    ID
    849
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者