C语言练习题答案 下载本文

**输入数据格式为:\**输出格式要求:

若是素数输出数据格式为:\ 若不是素数输出数据格式为: \不完整答案:#include intFun(inta) {

inti; if(a>1) {

for(i = 2;i

if(a%i==0) return0; else continue; } return1; } else return0; } main() {

intb,c;

printf(\ scanf(\ c = Fun(b); if(0 == c)

printf(\ else

printf(\ }

参考答案:#include \ intFun(intm); intmain()

{ intm, flag;

printf(\ do

{

scanf(\ }

while(m < 2); //e1

flag = Fun(m); //3

if(flag) //1

printf(\ else

printf(\

return0;

} intFun(intm)//2

{ inti, flag = 1; //1

for(i = 2; i < m; i++) //1 { if(m % i == 0) //1

{ flag = 0; //1 break; } }

returnflag;//2 }

- ---------------------------------------------------------5 6.求1898

现將不超过2000的所有素数从小到大排成第一行,第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数之差。请编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假如存在的话,又有几种这样的情况? **输入格式要求:提示信息:\**输出格式要求:\程序运行示例如下:

There are follwing primes in first row : (1).101,......,1999 (2). 89,......,1987 (3). 53,......,1951 (4). 3,......,1901 答案:

#include #defineN 330 int a[N]; int main()

{ }

7.从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出\。例如,用户输入90时,程序输出90 = 2 * 3 * 3 * 5;用户输入17时,程序输出\prime number\。

输入提示信息:\输入格式:\输出格式:

是素数时输出\

}

printf(\); for (c = 329;c >= 0;c--)

for (b = c + 1;c < b;b++)

if (b < 330) { } else

break;

if ((a[b] - a[c]) == 1898) { } else

continue;

printf(\, d, a[c], a[b]); d++;

int c = 0, b = 0, d = 1; int i = 0, j = 0, k = 0; for (i = 3;i <= 2000;i++) {

for (j = 2;j < i;j++) { }

if (j == i) { } else

continue; a[k] = i; k++;

if (i%j == 0) else

continue; break;

否则输出用\,\运行示例1: Input m:90↙ 90 = 2 * 3 * 3 * 5 运行示例2: Input m:13↙ It is a prime number 答案:

#include #include intIsPrime(intx);

voidOutputPrimeFactor(intx); intmain() { intm;

printf(\ scanf(\ if(IsPrime(m)) {

printf(\ } else {

printf(\ OutputPrimeFactor(m); } return0; }

intIsPrime(intx) {

inti,flag=1;

intsquareRoot=sqrt(x); if(x<=1) { flag=0; }

for(i=2;i<=squareRoot&&flag;i++) {

if(x%i==0) { flag=0; } }

returnflag;