若两素数之差为2 ,则称两素数为双胞胎数,问32-600之间有多少对双胞胎数. 以下是我做的 能告诉我我错了
问题描述:
#include
#include
using namespace std;
int main()
{ int n,k,i,x=0,a=37,b;
for (n=32;n
问题解答:
for (i=2;i<=k;i++) if (n%k==0)break;这里你好像是写错了,应该是 n%i 而不是n%k。你改改看。
除了楼上所说的以下这句也有问题a=b;楼主好好想一下自己程序的流程你就会发现你的错误我说下我的思路首先n应该是素数,如果是,再判断n+2是否也是如果是则说明这是一对双胞胎以下是我写的楼主可以参考希望对您有所帮助#include <iostream>#include <cmath>using namespace std;int isprima(int x) {int i, k;k = (int) (sqrt(x));for (i = 2; i <= k; i++)if (x % i == 0)return 0;return 1;}int main() {int n, x = 0;for (n = 32; n <= 600; n++) {if (1 == isprima(n) && 1 == isprima(n + 2) && (n + 2) <= 600) {x++;cout << "(" << n << "," << n + 2 << ")" << " ";if (x % 5 == 0)cout << endl;}}cout << endl;cout << "共有" << x << "对双胞胎素数" << endl;return 0;}
妈妈问答提示您:回答为网友贡献,仅供参考之用。