#include <iostream>
bool isPrime(int number) {
if (number <= 1) {
return false;
}
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
int main() {
std::cout << "Prime numbers between 100 and 200:" << std::endl;
for (int i = 100; i <= 200; i++) {
if (isPrime(i)) {
std::cout << i << " ";
}
}
std::cout << std::endl;
return 0;
}
用这方法
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
for (int i = 100; i <= 200; i++) {
if (is_prime(i)) {
printf("%d ", i);
}
}
return 0;
}
if(i=n)改为if(i==n)
此外,第10行的换行符没有识别,重新编译一下
你写的代码有如下几个问题:
1.第10行的if(i=n)改为if(i==n),if()内要填条件,i=n是赋值语句,虽然不规范,但是C++编译器并不会报错;
2.内层for循环的大括号。如果大括号内只有一行,可以省去大括号,如果不止一行,那么需要加大括号。如
for (int i=0;i<=10;i++)
cout<<i<<" ";
就可以不加大括号(加也可以),而
for (int i=0;i<=10;i++)
{
if (i%2!=0)
break;
else
cout<<i;
}
就需要加括号了。
还可以改进:
1.n=n+2;可改为n+=2;
2.m=m+1;可改为m++;或m+=1;
3.第二行的#include<math.h>可以去掉,因为没有用到math.h头文件的地方;
所以,可以将原来的代码改为
#include<cstdio>
int main()
{
int n,i,m=0;
for(n=101;n<=200;n=n+2)
{
for(i=2;i<n;i++)
{
if(n%i==0)break;
if(i==n-1)printf("%d\n",n);
}
m=m+1;
if(m%10==0)printf("\n");
}
return 0;
}
**例如:
输入:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
输出:
7407407407407407407407405925925925925925925925926**``
#include <stdio.h>
int main()
{
int a[100] = {0},b[100] = {0},c[200] = {0}; //定义数组a、b用来存储两个大数,数组c用来存储两大数相乘之积
char sa[100] = {0},sb[100] = {0}; //定义两个字符串用来接收两个大数(字符串的长度不收限制)
int i,j; //定义两个循环变量
int m = 0,n = 0; //定义m、n并赋值为0用来记录大数的位次
scanf("%s %s",sa,sb); //用字符串来接收数据
while(sa[m] != '\0') //用两个while循环实现将字符串转换成数组,方便之后的计算
{
a[m] = sa[m] - '0';
m++;
}
while(sb[n] != '\0')
{
b[n] = sb[n] - '0';
n++;
}
for(j = 0;j < n;j++) //for循环嵌套实现两大数相乘并将其乘积放入相同的位次(注意将c[0]位空出来方便解决之后有可能出现的进位问题)
{
for(i = 0;i < m;i++)
{
c[i + j + 1] += a[j] * b[i];
}
}
for(i = m + n - 1;i >= 0;i--) //for循环将c数组里的数实现进位
{
if(c[i] > 9)
{
c[i - 1] += c[i] / 10;
c[i] %= 10;
}
}
i = 0;
printf("\n这两数相乘之积为:\n");
if(c[i] == 0) //判断c[0]位是否存在进位问题
{
for(i = 1;i < m + n - 1;i++)
{
printf("%d",c[i]);
}
}
else
{
for(i = 0;i < m + n - 1;i++)
{
printf("%d",c[i]);
}
}
return 0;
}