NC208815. 素数中的等差数列
描述
输入描述
输入占一行,只包含两个数a和b,并用空格隔开。a<b,a<=1000,b<=100000
输出描述
输出占若干行,每行为一个等差数列,每个数用空格隔开
示例1
输入:
141 400
输出:
151 157 163 167 173 179 199 211 223 251 257 263 269 367 373 379
C++(g++ 7.5.0) 解法, 执行用时: 13ms, 内存消耗: 468K, 提交时间: 2023-05-30 22:38:59
#include<stdio.h> int pd(int n) {for(int i=2;i*i<=n;i++) {if(n%i==0){return 0;}} return 1;} int main() { int n,b,i,j,t=0,k;int a[10001]; scanf("%d %d",&n,&b); for (i=n;i<=b;i++) {if(pd(i)==1){a[t]=i;t++;}} i=1;k=2; while(i<t-1) { while(a[i]+a[i]==a[i-1]+a[i+1]) {k++;i++;} if(k==2) {i++;} if(k>=3) {for(j=i+1-k;j<=i;j++) {printf("%d ",a[j]);} printf("\n"); i=i-1+k; k=2;} } return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 693ms, 内存消耗: 444K, 提交时间: 2023-07-20 11:44:50
#include<iostream> using namespace std; int main() { int a,b,c[100010],x=0,i,j; cin>>a>>b; for(i=a;i<=b;i++) { for(j=2;j<=i/2;j++) { if(i%j==0) break; } if(j>i/2) { c[x]=i; x++; } } for(i=1;i<x;i++) { if(c[i] - c[i - 1] == c[i + 1] - c[i]){ int d = c[i] - c[i - 1]; cout << c[i - 1]; for(; i < x && c[i] - c[i - 1] == d; i++) cout << ' ' << c[i]; cout << endl; } } }